Как я могу сделать обход сканирования и выходить из него, когда сталкивается с первым исключением? - программирование
Подтвердить что ты не робот

Как я могу сделать обход сканирования и выходить из него, когда сталкивается с первым исключением?

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

Любые советы?

4b9b3361

Ответ 1

Начиная с 0.11 существует CLOSESPIDER_ERRORCOUNT:

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

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

Ответ 2

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

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

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