我正在抓取一个网站,我想在获得响应状态 50x 时重试请求,但我得到了
忽略非 200 响应
我怎样才能摆脱它并重试请求几次(例如默认为 3 次)或重试直到获得 200 响应状态。
DEBUG:scrapy.downloadermiddlewares.retry:Retrying <GET http://sample.com/> (failed 1 times): 502 Bad Gateway
DEBUG:scrapy.core.engine:Crawled (502) <GET http://sample.com/> (referer: None)
CRITICAL:security_daily_history:<twisted.python.failure.Failure scrapy.spidermiddlewares.httperror.HttpError: Ignoring non-200 response>
更新:
我的自定义重试中间件是:
class CustomRetryMiddleware(RetryMiddleware):
def process_response(self, request, response, spider):
super().process_response(request, response, spider)
return response
它应该像内置一样工作,RetryMiddleware
但它没有,我RETRY_TIMES = 4
在我的设置中设置但蜘蛛502
在失败 1 次后忽略状态。要重现此问题,此链接始终返回 502 状态代码。我通过以下方式启用了我的自定义中间件:
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.retry.RetryMiddleware': None,
'projectname.middlewares.CustomRetryMiddleware': 543,
}