Web scraping 如何自动增加刮痕';s下载延迟,同时检测响应代码500';s状态
我将编写数百个蜘蛛来抓取不同的静态网页,所以我选择Scrapy来帮助我完成我的工作 在工作中,我发现大多数网站都很简单,没有反蜘蛛功能。但是我发现在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.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,
}
如果你的爬虫足够强大,足以将一个网站抱死,你可能应该从一个更合理的延迟开始:)爱它,干净的解决方案。