首页 > 解决方案 > 如果在响应代码中得到 307,如何让 scrapy 重试 URL?

问题描述

我正在尝试使用代理来抓取https://zillow.com 。但是对于大多数 URL,我被重定向到验证码验证页面。例如,

我想获取:https ://www.zillow.com/homes/90001_rb/

但我被重定向到https://www.zillow.com/captchaPerimeterX/?url=%2fhomes%2f90001_rb%2f2_p%2f&uuid=6da17b30-59a7-11e8-861d-5999f3314703&vid=

因此,我希望爬虫重试那些接收到 HTTP 响应代码 307 的 URL。我尝试在 settings.py 中添加以下代码。

RETRY_HTTP_CODES = [500, 503, 504, 400, 408, 307, 403]
RETRY_TIMES=5  
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.retry.RetryMiddleware': 500,
'real_estate.middlewares.RealEstateDownloaderMiddleware':100,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,
}  

但它没有用。我不知道我做错了什么。因此,如果有人可以教我如何以正确的方式进行操作,那将非常有帮助。谢谢。

标签: python-3.xscrapy

解决方案


您可能还必须添加以下列表:

handle_httpstatus_list = [500, 503, 504, 400, 408, 307, 403]

这样scrapy就可以先处理那些Http代码。


推荐阅读