码迷,mamicode.com
首页 > 其他好文 > 详细

scrapy.Request的旅行

时间:2019-02-13 11:00:10      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:time   生成器   dom   nload   cookie   循环   队列   产生   nbsp   

 

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

 

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的旅行

标签:time   生成器   dom   nload   cookie   循环   队列   产生   nbsp   

原文地址:https://www.cnblogs.com/luxifa/p/10368464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!