鉴于爬虫的高效率以及无差别性,在获取一些网站的内容时,会对服务器造成巨大的压力,以至于网站管理者为了保持服务器的平衡,会做一些反爬虫的措施,阻止爬虫的前进。
道高一尺魔高一丈。为了应对这些反爬措施,虫子们也有自己的方法。对此,希望能分享一点经验,最主要的是能够做好学习笔记,方便日后的查看。
NO.1 添加User-Agent池
User-Agent是headers中的一个属性,表示当前访问服务器的身份信息。简单来说,就是告诉服务器,谁在浏览信息。也是反反爬策略中最简单的一项。
同一个身份过于频繁的访问服务器,会被识别为机器身份,遭到反爬的打击。所以需要频繁的更改User-Agent信息。
经过大量的验证以及实验之后,终于成功的实现了每次请求都是不同的身份。话不多说,燥起来吧,上代码。
第一步
Scrapy 发送请求获取响应的流程是,request对象从调度器中提取出来,交给下载器进行请求。过程中必须经过下载器中间件downloadmiddleware,下载器中间件中的主要方法process_request()是在request对象进入下载器之前进行处理,需要添加的user-agent就在这个方法中实现;process_response()是在下载器将请求到的响应返回给引擎时,对响应resoonse进行处理。这里主要介绍process_request().
添加User-Agent池
在scrapy中的middlewares.py中间件管理文件中添加一个useragent的类。
from fake_