Как автоматически использовать прокси-сервер при обнаружении с помощью кода состояния кода 403? - PullRequest
0 голосов
/ 22 октября 2019

В процессе захвата встречаются 403 кода состояния. Требование: автоматически использовать агента при обнаружении кода состояния 403.

Проверка и ответ на код состояния настроен в downloadermiddleware, но, похоже, работает только для первой ссылки

def process_response(self, request, response, spider):

    status_code = [403]
    if response.status in status_code:
        spider.logger.debug('Error ======= %s %s , 开始使用 Proxy 代理' % (response.status, request.url))
        import importlib
        settings = importlib.import_module('settings')
        proxy = AbuYunProxyMiddleware(settings=settings)
        request.meta['proxy'] = proxy.proxy_server
        request.headers['Proxy-Authorization'] = proxy.proxy_authorization
        return request
    return response

1 Ответ

1 голос
/ 22 октября 2019

Я рекомендую вам создать новый класс, наследующий scrapy 's RetryMiddleware, и переопределить функцию process_response.

def process_response(self, request, response, spider):
    if request.meta.get('dont_retry', False):
        return response
    if response.status in self.retry_http_codes:
        reason = response_status_message(response.status)
        # Add your proxy
        request.meta["proxy"] = PROXY
        return self._retry(request, reason, spider) or response
    return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...