python-3.x - 如果在响应代码中得到 307,如何让 scrapy 重试 URL?
问题描述
我正在尝试使用代理来抓取https://zillow.com 。但是对于大多数 URL,我被重定向到验证码验证页面。例如,
我想获取:https ://www.zillow.com/homes/90001_rb/
因此,我希望爬虫重试那些接收到 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,
}
但它没有用。我不知道我做错了什么。因此,如果有人可以教我如何以正确的方式进行操作,那将非常有帮助。谢谢。
解决方案
您可能还必须添加以下列表:
handle_httpstatus_list = [500, 503, 504, 400, 408, 307, 403]
这样scrapy就可以先处理那些Http代码。
推荐阅读
- javascript - 将日期时间转换为 dd/mm/yy h:m
- javascript - 当我运行“npm install”时,我遇到了我不明白的 npm 问题
- batch-file - 使用批处理脚本复制超过 x 天的文件和文件夹
- python - 如何创建一个新的蛋白质数据库文件?
- xcode - 适用于 iOS Xcode 的 Facebook SDK?
- android - 从 Firebase 数据库中检索到 10 多个项目的列表,在第 9 个项目之后,第 10 个项目影响第 1 个项目,第 11 个项目影响第 2 个项目,依此类推
- angularjs - NFC 读卡器(Xamarin 或 Ionic)
- ios-frameworks - 我们如何在 iOS 的自定义框架中嵌入第三方框架
- .net-core - 用于 dotnet 控制台应用程序的 Okta OIDC
- jquery - jQuery定时器函数表