首页 > 解决方案 > 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

没有帮助

标签: pythonscrapy

解决方案


亚马逊采用先进的反机器人措施。

使用像Crawlera这样的智能代理或提供良好 IP 轮换和其他网络爬取功能的替代代理服务。


推荐阅读