Web scraping 如何自动增加刮痕';s下载延迟,同时检测响应代码500';s状态

Web scraping 如何自动增加刮痕';s下载延迟,同时检测响应代码500';s状态,web-scraping,scrapy,web-crawler,delay,Web Scraping,Scrapy,Web Crawler,Delay,我将编写数百个蜘蛛来抓取不同的静态网页,所以我选择Scrapy来帮助我完成我的工作 在工作中,我发现大多数网站都很简单,没有反蜘蛛功能。但是我发现在scrapy.setting.py文件中设置套装DOWNLOAD\u DELAY很困难。爬行器太多,无法编写代码并找到合适的下载\u延迟,因为每个爬行器都会耗尽我的时间 我想知道哪些型号的scrapy load和使用DOWNLOAD\u DELAY参数,以及如何编写一个程序,在检测服务错误时自动增加DOWNLOAD\u DELAY(蜘蛛请求太频繁).

我将编写数百个蜘蛛来抓取不同的静态网页,所以我选择Scrapy来帮助我完成我的工作

在工作中,我发现大多数网站都很简单,没有反蜘蛛功能。但是我发现在
scrapy.setting.py
文件中设置套装
DOWNLOAD\u DELAY
很困难。爬行器太多,无法编写代码并找到合适的
下载\u延迟
,因为每个爬行器都会耗尽我的时间


我想知道哪些型号的scrapy load和使用
DOWNLOAD\u DELAY
参数,以及如何编写一个程序,在检测服务错误时自动增加
DOWNLOAD\u DELAY
(蜘蛛请求太频繁).

您可以使用自己的策略扩展负责管理延迟的
AutoThrottle
中间件:

# extensions.py

from scrapy.extensions.throttle import AutoThrottle

class ZombieThrottle(AutoThrottle):
    """start throttling when web page dies"""

    def _adjust_delay(self, slot, latency, response):
        """Define delay adjustment policy"""
        if response.status == 500:
            slot.delay = 60  # 1 minute
并在
设置中启用它,而不是默认设置。py

# settings.py
EXTENSIONS = {
    'scrapy.extensions.throttle.AutoThrottle': None,
    'myspider.extensions.ZombieThrottle': 0,
}

如果你的爬虫足够强大,足以将一个网站抱死,你可能应该从一个更合理的延迟开始:)爱它,干净的解决方案。