Исключения¶
Справочник по встроенным исключениям¶
Вот список всех исключений, включенных в 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
и раздел Остановка загрузки ответа для получения дополнительной информации и примеров.