在公司项目中,有一些爬虫中需要用的国内代理,有一些需要用到国外代理,有一些不用代理
我测试了三个方案
方案一:
在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
最后是采用的这个方案
时间: 2024-10-17 22:03:58