AutoThrottle extension(自动限速)
该扩展基于Scrapy服务器负载和当前爬取站点的负载,能够将爬虫的爬取速度自动调整至最佳。你只需要设置请求并发数,扩展就可以完成其他工作师以实现自动限制爬虫请求发起的速度。本文整理自scrapy官方文档
基本思想
AutoThrottle 动态调整请求间的下载延迟,让爬虫平均向各个网站发送AUTOTHROTTLE_TARGET_CONCURRENCY个并发请求。其思想如下:如果服务器响应需要的时间为latency,那客户端每lantency/N秒发送一个请求就能实现N个并发请求。N就是AUTOTHROTTLE_TARGET_CONCURRENCY。Latency指的是建立TCP连接到收到HTTP响应头之间的这段时间。
调整规则
AutoThrottle 根据以下规则调整下载延迟。
- 每个spider开启时,初始download delay为
AUTOTHROTTLE_START_DELAY - 当接收到响应时,目标download delay根据
lantency/N计算 - 下一个请求的download delay则为前一个download delay与目标download delay两者的平均数
- 状态码不为200响应不会将download delay降低
- download delay不会变得低于
DOWNLOAD_DELAY或高于AUTUOTHROTTLE_MAX_DELAY
注意:AutoThrottle 遵从CONCURRENT_REQUESTS_PER_DOMAIN 和CONCURRENT_REQUESTS_PER_IP,还有DOWNLOAD_DELAY的限制。
设置setting.py中的相关变量
-
AUTOTHROTTLE_ENABLEDTrue:启用;False:不启用(默认值);
-
AUTOTHROTTLE_START_DELAY每一个爬虫的初始download delay,单位是秒,默认值为5.0
-
AUTOTHROTTLE_MAX_DELAY允许的最大download delay,单位是秒,以防出现latency过高而导致download delay跟着变高的情况。默认值是60.0
-
AUTOTHROTTLE_TARGET_CONCURRENCY针对每个网站的平均并发请求量,默认值是1.0。这是一个平均值,意味着某一时刻的并发量可能高于也可能低于这个值。
-
AUTOTHROTTLE_DEBUG调试模式,日志将会打印每次响应消耗的时长latency与当前所设置的当前的Download_delay时长。这样就可以实时观察Download_delay参数的调整过程。True:开启调试;False:关闭调试(默认值)
-
CONCURRENT_REQUESTS_PER_DOMAIN单个域名并发数
-
CONCURRENT_REQUESTS_PER_IP单个IP并发数量
-
DOWNLOAD_DELAY对同一website发起请求的间隔,默认值为0
-
RANDOMIZE_DOWNLOAD_DELAYTrue:启动随机请求间隔,为0.5*DOWNLOAD_DELAY 至 1.5*DOWNLOAD_DELAY之间的的随机数;False:不启动;默认是True,但是因为DOWNLOAD_DELAY的默认值为0,所以要想真正启动还需要设置DOWNLOAD_DELAY
最后
以上就是重要萝莉最近收集整理的关于Scrapy中的自动限速扩展详解的全部内容,更多相关Scrapy中内容请搜索靠谱客的其他文章。
发表评论 取消回复