python - Python Scrapy 代理在几轮后死了?
问题描述
我想用scrapy构建一个亚马逊爬虫。
它起作用了,但是在每下一个代理获得大约 10 个良好代理之后Proxy <IP:PORT> is DEAD
我不明白为什么...
那是我的中间件
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy_user_agents.middlewares.RandomUserAgentMiddleware': 400,
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
我有 1000 个代理,大多数都没有死,几乎所有代理都在另一个爬虫上工作,但几轮后就没有在亚马逊上工作......
有人有想法吗?用户代理工作,代理也在旋转,他在每个下一个“死”代理上显示不同的 IP 和一些东西
这是一个日志
2019-11-06 21:52:40 [rotating_proxies.expire] DEBUG: Proxy <http://XXX:XXX@XXXX:8080> is DEAD
2019-11-06 21:52:40 [rotating_proxies.middlewares] DEBUG: Retrying <GET https://www.amazon.de/gp/offer-listing/B00VB2ISDM/ref=olp_f_used?f_primeEligible=true&f_usedAcceptable=true&f_usedGood=true&f_used=true&f_usedLikeNew=true&f_usedVeryGood=true> with another proxy (failed 9 times, max retries: 300)
2019-11-06 21:52:40 [scrapy_user_agents.middlewares] DEBUG: Proxy is detected http://xxxx:8080
正如我所说,大部分时间都在为另一个站点工作,所以没有像亚马逊爬虫上显示的那么多死代理
我也尝试添加
DOWNLOAD_DELAY = 5
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 20
AUTOTHROTTLE_MAX_DELAY = 60
没有帮助
解决方案
亚马逊采用先进的反机器人措施。
使用像Crawlera这样的智能代理或提供良好 IP 轮换和其他网络爬取功能的替代代理服务。
推荐阅读
- botframework - 从机器人框架模拟器向团队发送查询,并从团队向机器人框架模拟器获取回复
- amazon-web-services - 如何在多个实例上运行用户数据?
- java - JSF selectOneMenu onChange 更新对象
- android-security - 将应用上传到 Play 商店,您的应用正在使用不安全的 HostnameVerifier 实现
- html - 如何在符号之前设置部分文本字符串的样式
- node.js - device.servicesUUID 输出 then.catch 打印但在值内
- javascript - 使用javascript从多个子域中提取域
- go - 非平凡代码golang的执行时间为零
- node.js - NodeJS 上的 Axios 不会登录会话,但从 Postman 会
- facebook - Facebook 像素事件重复数据删除 - 唯一 EventID