Как я могу прервать и выйти из программы scrapy crawl при обнаружении первого исключения? - PullRequest
19 голосов
/ 02 марта 2012

В целях разработки я хотел бы прекратить все действия по сканированию скопа, как только произойдет первое исключение (в пауке или конвейере).

Любой совет?

Ответы [ 3 ]

13 голосов
/ 08 марта 2016

Начиная с 0,11, существует CLOSESPIDER_ERRORCOUNT:

Целое число, которое указывает максимальное количество ошибок, которое необходимо получить до закрытия паука.Если паук генерирует больше, чем это количество ошибок, он будет закрыт по причине closespider_errorcount.Если ноль (или не установлен), пауки не будут закрыты по количеству ошибок.

Если установлено значение 1, паук будет закрыт при первом исключении.

10 голосов
/ 23 апреля 2013

В пауке вы можете просто выбросить CloseSpider исключение.

def parse_page(self, response):
    if 'Bandwidth exceeded' in response.body:
        raise CloseSpider('bandwidth_exceeded')

Для других (связующее ПО, конвейер и т. Д.) Вы можете вручную вызвать close_spider , как уже упоминалось.

3 голосов
/ 02 марта 2012

это зависит только от вашей бизнес-логики.но это будет работать для вас

crawler.engine.close_spider(self, 'log message')

Рекомендуемое чтение

Рекомендуемое чтение

, а худшее решение -

import sys

sys.exit("SHUT DOWN EVERYTHING!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...