scrapy.Request的旅行

Posted luxifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy.Request的旅行相关的知识,希望对你有一定的参考价值。

 

使用代理池跑爬虫时,特别关注每个请求是否使用了代理,所以就有了接下来的收获,也有个问题同大家分享。

 

spider产生请求,例如在for循环中yield,这个生成器会在进入middlewares或下载器之前就被迭代,放入请求队列。

经过middlewares,队列中每个请求均被处理(如设置cookie,添加proxy),然后传递给下载器。但这里有一个需要关注的点,middlewares处理过的请求,下载器不一定立马执行,具体要参考settings中设置的download_delay/per_ip/per_domain。

队列默认的下载顺序是LIFO(后进先出,后进入队列的请求先被下载器执行)。

??若proxy非长效ip,请求在等待执行时,middlewares给其设置的ip可能会失效!

 

建议:

DOWNLOAD_TIMEOUT 设置小值(默认是180),减少无效ip造成的时间浪费。

判断retry_times,更换代理ip或长效ip。

 

问题:

是否可能在每个请求给下载器执行前才设置proxy,减少proxy过期的概率/数量/时间?

 

以上是关于scrapy.Request的旅行的主要内容,如果未能解决你的问题,请参考以下文章

scrapy request不成功怎么办

Scrapy-Shell的用法以及request和response的区别

Scrapy和Requests的post请求详解

Scrapy数据建模-构造并发送请求(翻页实现)

Scrapy模拟登陆

scrapy中的ruquest