Исключения

Справочник по встроенным исключениям

Вот список всех исключений, включенных в Scrapy, и их использование.

CloseSpider

exception scrapy.exceptions.CloseSpider(reason='cancelled')

Это исключение может быть вызвано обратным вызовом паука, чтобы запросить его закрытие/остановку. Поддерживаемые аргументы:

Параметры

reason (str) – причина закрытия

Например:

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

DontCloseSpider

exception scrapy.exceptions.DontCloseSpider

Это исключение может быть вызвано в обработчике сигнала spider_idle, чтобы предотвратить закрытие паука.

DropItem

exception scrapy.exceptions.DropItem

Исключение, которое должно быть вызвано этапами конвейера элемента, чтобы остановить обработку элемента. Для получения дополнительной информации см. Элемент конвейера.

IgnoreRequest

exception scrapy.exceptions.IgnoreRequest

Это исключение может быть вызвано планировщиком или любым промежуточным программным обеспечением загрузчика, чтобы указать, что запрос следует игнорировать.

NotConfigured

exception scrapy.exceptions.NotConfigured

Это исключение может быть вызвано некоторыми компонентами, чтобы указать, что они останутся отключенными. Данные компоненты включают:

  • Расширения

  • Конвейеры элементов

  • Промежуточное ПО загрузчика

  • Промежуточное ПО Spider

Исключение должно быть вызвано в методе компонента __init__.

NotSupported

exception scrapy.exceptions.NotSupported

Это исключение возникает, чтобы указать на неподдерживаемую функцию.

StopDownload

Добавлено в версии 2.2.

exception scrapy.exceptions.StopDownload(fail=True)

Возникает из обработчика сигналов bytes_received или headers_received, чтобы указать, что для ответа не следует загружать дополнительные байты.

Логический параметр fail определяет, какой метод будет обрабатывать полученный ответ:

  • Если fail=True (по умолчанию), вызывается ошибка запроса. Объект ответа доступен как атрибут response исключения StopDownload, который, в свою очередь, сохраняется как атрибут value полученного объекта Failure. Это означает, что в случае ошибки, определенной как def errback(self, failure), ответ может быть доступен через failure.value.response.

  • Если fail=False, вместо этого вызывается обратный вызов запроса.

В обоих случаях тело ответа может быть усечено: тело содержит все байты, полученные до момента возникновения исключения, включая байты, полученные в обработчике сигнала, который вызывает исключение. Кроме того, объект ответа помечен как "download_stopped" в его атрибуте Response.flags.

Примечание

fail — это параметр, состоящий только из ключевого слова, т.е. повышение StopDownload(False) или StopDownload(True) приведёт к увеличению TypeError.

См. документацию по сигналам bytes_received и headers_received и раздел Остановка загрузки ответа для получения дополнительной информации и примеров.