Scrapy: Как я могу поменять новый прокси с промежуточным ПО, когда получу 403/302? - PullRequest
0 голосов
/ 01 мая 2018

Я записал промежуточное ПО:

def process_request(self, request, spider):
    request = self.change_proxy(request)   # set request proxy

def process_response(self, request, response, spider):
    if response.status != 200:
        self.delete_proxy()           # remove unusable proxy
        return request.copy()         # send request to process_request to change proxy
    return response

def process_exception(self, request, exception, spider):
    self.delete_proxy()              # remove unusable proxy
    # if comment the code below, i will not get 302. but maybe i will lost crawl some webpage?
    return request.copy()            # send request to process_request to change proxy

Во-первых, у меня есть несколько прокси в Redis, что я хочу сделать:

  1. дать каждому запросу случайный прокси,
  2. при сбое подключения к прокси (вызвано исключение process_exception), измените новый прокси и повторно просмотрите веб-страницу.
  3. когда прокси-сервер запрещен сайтом (response.status! = 200), измените новый прокси-сервер и повторно просмотрите веб-страницу.

НО, когда я запускаю своего паука в течение нескольких минут, я всегда получаю 302 или всегда звонят process_exception, почему? Если я перезапускаю своего паука, он работает нормально только в первые несколько минут ... (так что прокси ip в порядке, что не так с моим кодом?) Как я могу сделать это правильно?

...