Как мне сказать пауку, чтобы он прекратил запросы после n неудачных запросов? - PullRequest
0 голосов
/ 21 июня 2020
import scrapy

class MySpider(scrapy.Spider):
    start_urls = []
    def __init__(self, **kwargs):
        for i in range(1, 1000):
            self.start_urls.append("some url"+i)

    def parse(self, response):
        print(response)

Здесь мы ставим в очередь 1000 URL-адресов в функции __init__, но я хочу прекратить выполнение всех этих запросов, если она не работает или возвращает что-то нежелательное. Как мне сказать пауку, чтобы он прекратил выполнение запросов, скажем, после 10 неудачных запросов.

1 Ответ

1 голос
/ 21 июня 2020

В этом случае вы можете установить CLOSESPIDER_ERRORCOUNT равным 10. Однако он, вероятно, не учитывает только неудавшиеся запросы. В качестве альтернативы вы можете установить HTTPERROR_ALLOWED_CODES для обработки даже ответов об ошибках (неудавшихся запросов) и реализовать собственный счетчик неудачных запросов внутри паука. Затем, когда счетчик превышает пороговое значение, вы сами создаете исключение CloseSpider.

...