文章目录
  1. 1. PyQuery: 一个类似jQuery的Python库
  2. 2. Python轻量级ORM - Peewee
  3. 3. requests.get 获取页面乱码
  4. 4. IndentationError: unindent does not match any outer indentation level
  5. 5. urllib2.HTTPError: HTTP Error 403: Forbidden
  6. 6. 装饰器
  7. 7. @classmethod 或 @staticmethod

PyQuery: 一个类似jQuery的Python库

PyQuery是一个类似于jQuery的Python库,也可以说是jQuery在Python上的实现。pyQuery是使用lxml来实现快速的xml和html操作的。具体的PyQuery文档见:http://pyquery.org

Python轻量级ORM - Peewee

最新API:Python轻量级ORM - Peewee

like匹配语句:

xxModel.select().where(xxModel.author ** 'zh%')

requests.get 获取页面乱码

查看一下网页的编码,比如是gbk

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

那就需要response设置为r.encoding=’gbk’, 代码如下:

r = requests.get(self.url, headers=config.HEADERS)
r.encoding = 'gb2312'
return r.text

IndentationError: unindent does not match any outer indentation level

解决方案:这主要是TAB键和空格混搭使用造成的,需要统一一下对齐的风格即可。

urllib2.HTTPError: HTTP Error 403: Forbidden

解决方案:ulr请求需要模拟真实的浏览器访问,需要设置User-Agent项,最简便的方式就是随机获取,代码如下:

# -*- coding: UTF-8 -*-
import sys
import random

reload(sys)
sys.setdefaultencoding('utf-8')

USER_AGENTS = [
                'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
                'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
                'Opera/9.25 (Windows NT 5.1; U; en)',
                'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
                'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
                'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
                'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
                'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7',
                'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'
            ]

#伪装浏览器头
HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'User-Agent': random.choice(USER_AGENTS),
    'Referer': 'http://www.baidu.com' # or 'http://www.google.cpm'
}

装饰器

@classmethod 或 @staticmethod

参考知乎话题 - https://www.zhihu.com/question/21084971

文章目录
  1. 1. PyQuery: 一个类似jQuery的Python库
  2. 2. Python轻量级ORM - Peewee
  3. 3. requests.get 获取页面乱码
  4. 4. IndentationError: unindent does not match any outer indentation level
  5. 5. urllib2.HTTPError: HTTP Error 403: Forbidden
  6. 6. 装饰器
  7. 7. @classmethod 或 @staticmethod