当我们要爬取大量网页的时候,可能会收到对方服务器的限制,从而被禁止。
那么我们应该如何应对这些反爬虫机制呢
scrapy项目中可以有很多方法避免被禁止。其中两个比较好用的方式,就是使用用户代理池和ip代理池。因为大部分网站都是通过这两种方式进行反爬的。
那么具体怎么使用呢,这里我们就用用到scrapy的中间件middlewares。因为在scrapy中两者的使用方式大同小异,这里就合在一起讲。
首先是在setting.py设置用户代理池和ip代理池的变量,在其他py文件也可以,只要能被调用到就行。如下
设置IP池
IPPOOL = [{
"ipaddr": "112.85.131.19:9999"},
{
"ipaddr": "112.85.170.24:9999"},
{
"ipaddr": "222.217.68.51:54355"}]
设置用户代理
USER_AGENTS = [
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)"