我需要在scrapy中为特定的蜘蛛设置HTTP代理。在Scrapy中是否有一种在运行时传递HTTP代理的方法?
例如,我可以在运行时传递用户代理,如下所示:
scrapy crawl <spidername> -s USER_AGENT='<some user agent>'我能以类似的方式传递我想要使用的HTTP代理吗?
发布于 2016-02-09 13:47:38
Scrapy理解http_proxy和https_proxy环境变量(参见 documentation)
所以你可以做这样的事情:
http_proxy="http://www.someproxy.com:3128" scrapy crawl <spidername>发布于 2016-02-09 12:55:59
我不确定您是否能够在运行时传递代理,但是您可以在middleware.py中实现这样的类
class CustomProxyMiddleware(object):
def process_request(self, request, spider):
if spider.name == 'particular_spider':
proxy = random.choice(LIST_OF_PROXIES)
request.meta['proxy'] = proxy你也可以用用户代理做同样的事情。
class CustomUserAgentMiddleware(object):
def process_request(self, request, spider):
if spider.name =='particular_spider':
agent = random.choice(USER_AGENTS)
request.headers['User-Agent'] = agent只需确保将这些类添加到DOWNLOADER_MIDDLEWARES中的settings.py中即可。
https://stackoverflow.com/questions/35291183
复制相似问题