2016-02-09 3 views
0

Мне нужно установить HTTP-прокси для конкретного паука в scrapy. Есть ли способ передать HTTP-прокси во время выполнения в Scrapy?Scrapy: передать HTTP-прокси во время выполнения

Например, я могу передать агенту пользователя во время выполнения следующим образом:

scrapy crawl <spidername> -s USER_AGENT='<some user agent>' 

Могу ли я передать HTTP-прокси я хочу использовать подобным образом?

ответ

1

Scrapy понимает http_proxy и https_proxy переменные окружения (см HttpProxyMiddleware documentation)

Таким образом, вы можете сделать что-то вроде:

http_proxy="http://www.someproxy.com:3128" scrapy crawl <spidername> 
+0

работал как шарм! Благодарю. –

1

Я не уверен, если вы можете передать прокси во время выполнения, но вы могли бы реализовать класс, как это в 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.

Смежные вопросы