3

Scrapy でプロキシのサイクルを使用していますが、一部のプロキシにエラーが発生し、スパイダーが停止することがあります..エラーは「CONNECT トンネルを開けませんでした」です。このエラーの場合、別のプロキシで再試行するようにコードを変更するにはどうすればよいですか? ?

変更する必要があるコードは次のとおりです: https://github.com/scrapy/scrapy/blob/master/scrapy/core/downloader/handlers/http11.py

4

1 に答える 1

5

このようなもの:

from scrapy.core.downloader.handlers.http11 import TunnelError


class RetryMiddleware(RetryMiddleware):
    def process_exception(self, request, exception, spider):
        if ( isinstance(exception, self.EXCEPTIONS_TO_RETRY) or isinstance(exception, TunnelError) ) \
                and 'dont_retry' not in request.meta:
            return self._retry(request, exception, spider)

settings.py で:

DOWNLOADER_MIDDLEWARES = { 
   'myproject.myretry.RetryMiddleware': 200,
   'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': None
}
于 2015-07-17T09:38:04.787 に答える