我必须在具有多个使用 scrapy 的爬虫的服务器中实现代理池。考虑到我已经有一个包含多个一直更新的代理的数据库,我将如何实现代理池。我不想直接在代码中添加代理,主要是因为很多代理死得非常快,而且一些爬虫需要很长时间才能完成。有没有办法使用中间件或不需要更改我得到的每个爬虫的东西来实现这一点?
2 回答

森栏
TA贡献1810条经验 获得超5个赞
中间件
import requests
PROXY_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,
}
添加回答
举报
0/150
提交
取消