scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

时间:2024-05-19 10:48:18

 

    对于爬虫攻城狮而言,爬虫的最大敌人就是反爬虫。在多次请求网页时(爬取大量url时),避免被地方*掉,User-agent代理的随机跳变就成了反爬虫的的第一步也是必须的一步的拉。

一:设置随机User-agent(User-agent文件自行准备)

    scrapy里怎么随机跳变User-agent呢?当scrapy项目创建完成,执行爬虫程序时,首先会先读取setting文件的配置,而在框架机制里又存在一个下载中间件,默认时setting里是关闭的,所以要先开启其实也就是去点注释。如图:

 

scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

 

 

注释完后就填补程序:如图:

 

scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

 

然后填补下爬虫程序,进行测试是否会产生不同的user-agent

 

scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

 

scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

 

可以看出每次请求返回的User-agent不同。

 

二:scrapy爬取大量不同的网页

     在使用scrapy框架时,对于一般的爬虫工程师,着重注重的是Spiders的爬虫文件,如果对scrapy有一些认识,并读过Spider源码,实现大量无规律的网页爬取并不是一件难事。

        scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

        当爬虫程序启动时,会先初始化读取爬虫名,爬虫网站的域名,需要爬取的url,获取到start_urls后,会调用start_requests函数遍历start_urls集合,最后在发请求。源码如下:

scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

         即:1:当url量很大时,需要重写start_requests方法,以读文件的形式加载url

                 2:当url量很少时,可以直接写在start_urls集合里

         本文是用的是第一种方法:

       scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

         这样大量url的加载就完成了。

三:设置并发数

       前面提到,当爬虫程序启动时会先的读取setting配置文件,如图是文件的设置:

scrapy设置随机User-agent、scrapy爬取大量网页、设置爬虫请求并发数

        建议一定要设置下载延迟,如果你设置请求数过大,没有下载延迟,网页可能会响应不及时,另外,爬虫攻城狮当然也是有高尚素质的,肯定会给做网站留点活路的。