我是靠谱客的博主 重要萝莉,最近开发中收集的这篇文章主要介绍Scrapy中的自动限速扩展详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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_DOMAINCONCURRENT_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中的自动限速扩展详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部