概述
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_ENABLED
True:启用;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_DELAY
True:启动随机请求间隔,为0.5*DOWNLOAD_DELAY 至 1.5*DOWNLOAD_DELAY之间的的随机数;False:不启动;默认是True,但是因为DOWNLOAD_DELAY的默认值为0,所以要想真正启动还需要设置DOWNLOAD_DELAY
最后
以上就是重要萝莉为你收集整理的Scrapy中的自动限速扩展详解的全部内容,希望文章能够帮你解决Scrapy中的自动限速扩展详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复