多语言展示
当前在线:622今日阅读:19今日分享:20

Python 爬虫:6 个常用的爬虫技巧总结!

随着越来越多的行业和个人都需要大数据的帮助,这样是背景下,数据采集成为技术主流,但是大量的采集受到了各种限制,其中最为常见的就是IP受限,该如何解决代理IP的问题也成为一大问题。爬虫在开发过程中也有很多复用的过程,这里总结一下,希望对你们有所帮助。
方法/步骤
1

基本抓取网页get方法和post方法

2

使用代理IP在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP;在urllib2包中有ProxyHandler类,通过此类可以设置代理访问网页,如下代码片段:

3

Cookies处理cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),python提供了cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.代码片段:

4

关键在于CookieJar(),它用于管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失,所有过程都不需要单独去操作。手动添加cookie

5

伪装成浏览器某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。所以用urllib2直接访问网站经常会出现HTTP Error 403: Forbidden的情况对有些 header 要特别留意,Server 端会针对这些 header 做检查User-Agent 有些 Server 或 Proxy 会检查该值,用来判断是否是浏览器发起的 RequestContent-Type 在使用 REST 接口时,Server 会检查该值,用来确定 HTTP Body 中的内容该怎样解析。这时可以通过修改http包中的header来实现,代码片段如下:

6

gzip压缩有没有遇到过某些网页,不论怎么转码都是一团乱码。哈哈,那说明你还不知道许多web服务具有发送压缩数据的能力,这可以将网络线路上传输的大量数据消减 60% 以上。这尤其适用于 XML web 服务,因为 XML 数据 的压缩率可以很高。但是一般服务器不会为你发送压缩数据,除非你告诉服务器你可以处理压缩数据。于是需要这样修改代码:这是关键:创建Request对象,添加一个 Accept-encoding 头信息告诉服务器你能接受 gzip 压缩数据然后就是解压缩数据:

7

多线程并发抓取单线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个程序只是简单地打印了1-10,但是可以看出是并发的。python的多线程对于爬虫这种网络频繁型,还是能一定程度提高效率的。

注意事项

爬虫采集中可以使用换IP软件比如极光IP解决IP限制

推荐信息