在公司项目中,有一些爬虫中需要用的国内代理,有一些需要用到国外代理,有一些不用代理
我测试了三个方案
方案一:
在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
这个方案是可行的
大家有没有更好的解决办法?
我测试了三个方案
方案一:
在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
这个方案是可行的
大家有没有更好的解决办法?