使用代理IP
开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP;
在urllib2包中有个ProxyHandler类,通过此类可以设置代理访问网页。
Cookies处理
cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),python提供了cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。
伪装成浏览器
某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。所以用urllib2直接访问网站经常会出现HTTP Error 403: Forbidden的情况对有些 header 要特别留意,服务端会针对这些 header 做检查。
- User-Agent 有些服务端或 Proxy 会检查该值,用来判断是否是浏览器发起的 Request;
- Content-Type 在使用 REST 接口时,服务端会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
页面解析
对于页面解析最强大的当然是正则表达式。其次就是解析库了,常用的有两个 lxml 和 BeautifulSoup,对于这两个库,我的评价是,都是HTML/XML的处理库。
- Beautifulsoup是纯python实现的,效率虽然低一些,但是功能实用,比如:它可以通过结果搜索获得某个HTML节点的源码这样的;
- lxml 底层是由C语言编码的,比较高效,支持Xpath。
验证码的处理
对于一些简单的验证码,可以进行简单的识别。本人也只进行过一些简单的验证码识别。但是有些反人类的验证码,比如12306,可以通过打码平台进行人工打码,当然这是要付费的。
gzip压缩
大家有没有遇到过某些网页,不论你怎么转码都是一团乱码。
如果你遇到了,说明你还不知道目前许多web服务具有发送压缩数据的能力,这可以将网络线路上传输的大量数据消减 60% 以上。尤其适用于 XML web 服务,因为 XML 数据的压缩率可以很高。但是一般服务器不会为你发送压缩数据,除非你告诉服务器你可以处理压缩数据。