gpt4 book ai didi

python - Scrapy:是否可以暂停 Scrapy 并在 x 分钟后恢复?

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:40 24 4
gpt4 key购买 nike

我正在尝试抓取大型网站。他们有一个限速系统。 scrapy遇到403页面可以暂停10分钟吗?我知道我可以设置一个 DOWNLOAD_DELAY 但我注意到我可以通过设置一个小的 DOWNLOAD_DELAY 来更快地抓取,然后在它得到 403 时暂停 scrapy 几分钟。这样,速率限制大约每小时触发一次。

最佳答案

可以自己写重试中间件,放到middleware.py

from scrapy.downloadermiddlewares.retry import RetryMiddleware
from scrapy.utils.response import response_status_message
from time import sleep

class SleepRetryMiddleware(RetryMiddleware):
def __init__(self, settings):
RetryMiddleware.__init__(self, settings)

def process_response(self, request, response, spider):
if response.status in [403]:
sleep(120) # few minutes
reason = response_status_message(response.status)
return self._retry(request, reason, spider) or response

return super(SleepRetryMiddleware, self).process_response(request, response, spider)

并且不要忘记更改 settings.py

DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.retry.RetryMiddleware': None,
'your_project.middlewares.SleepRetryMiddleware': 100,
}

关于python - Scrapy:是否可以暂停 Scrapy 并在 x 分钟后恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com