我将编写数百个Spider来爬行不同的静态网页,因此我选择Scrapy帮助我完成工作。
在工作过程中,我发现大多数网站都很简单,并且不反蜘蛛。但是我发现很难在DOWNLOAD_DELAY
文件中设置西装scrapy.setting.py
。蜘蛛太多了,无法编码,而为每个蜘蛛找到合适的DOWNLOAD_DELAY
会使我没时间了。
我想知道哪种模型的拼凑负载并使用DOWNLOAD_DELAY
参数,以及如何编写程序以在检测到发球错误时自动增加DOWNLOAD_DELAY
(蜘蛛请求太频繁)。
答案 0 :(得分:1)
您可以扩展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
并在您的settings.py
中启用它而不是默认值:
# settings.py
EXTENSIONS = {
'scrapy.extensions.throttle.AutoThrottle': None,
'myspider.extensions.ZombieThrottle': 0,
}