scrapy为不同网站设置不同的代理
在公司项目中,有一些爬虫中需要用的国内代理,有一些需要用到国外代理,有一些不用代理
我测试了三个方案
方案一:
在settings.py中开启代理,然后在spider中重写DOWNLOADER_MIDDLEWARES,但重写无法生效
方案二:
让scrapy切换到不同的settings.py文件,这个手动切换是有效果的,但是我研究了半天不知道如果让程序自动切换,最后放弃
方案三:
在middlewares.py中直接写,通过request.url来判断并启用相应的代理
class ProxyMiddleware(object): def process_request(self, request, spider): url=request.url if ‘baidu.com‘ in url: request.meta[‘proxy‘] = ‘这里设置国内http代理‘ elif ‘facebook.com‘ in url: request.meta[‘proxy‘]=‘这里设置国外http代理‘ else: pass
最后是采用的这个方案
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。