猿问

如何在多个scrapy爬虫中实现一个代理池?

我必须在具有多个使用 scrapy 的爬虫的服务器中实现代理池。

考虑到我已经有一个包含多个一直更新的代理的数据库,我将如何实现代理池。

我不想直接在代码中添加代理,主要是因为很多代理死得非常快,而且一些爬虫需要很长时间才能完成。

有没有办法使用中间件或不需要更改我得到的每个爬虫的东西来实现这一点?


摇曳的蔷薇
浏览 246回答 2
2回答

森栏

中间件import requestsPROXY_POOL_URL = 'http://127.0.0.1:5555/random'class RandomProxyMiddleware(object):    def process_request(self, request, spider):        proxy_ip = requests.get(PROXY_POOL_URL).text        request.meta["proxy"] = 'http://' + proxy_ip    和设置DOWNLOADER_MIDDLEWARES = {   'xxxxxxxxxxxxx.middlewares.RandomUserAgentMiddlware': 543,}

慕容森

是的,您可以使用下载器中间件来实现这样的代理处理。在 Github 中搜索 'scrapy proxy'以找到一些处理代理配置的下载器中间件示例。
随时随地看视频慕课网APP

相关分类

Python
我要回答