异常

内置异常参考

以下是 Scrapy 中包含的所有异常及其用法列表。

CloseSpider

异常 scrapy.exceptions.CloseSpider(reason='cancelled')[source]

可以在爬虫回调中引发此异常,以请求关闭/停止爬虫。支持的参数

参数:

reason (str) – 关闭原因

例如

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

DontCloseSpider

异常 scrapy.exceptions.DontCloseSpider[source]

可以在 spider_idle 信号处理器中引发此异常,以防止爬虫被关闭。

DropItem

异常 scrapy.exceptions.DropItem[source]

Item Pipeline 阶段必须引发此异常,以停止处理 Item。更多信息请参阅 Item Pipeline

IgnoreRequest

异常 scrapy.exceptions.IgnoreRequest[source]

调度器或任何 downloader middleware 都可以引发此异常,表明请求应该被忽略。

NotConfigured

异常 scrapy.exceptions.NotConfigured[source]

此异常可以由某些组件引发,以指示它们将保持禁用状态。这些组件包括

  • 扩展

  • Item pipelines

  • Downloader middlewares

  • Spider middlewares

必须在组件的 __init__ 方法中引发此异常。

NotSupported

异常 scrapy.exceptions.NotSupported[source]

引发此异常以指示不支持的功能。

StopDownload

在版本 2.2 中添加。

异常 scrapy.exceptions.StopDownload(fail=True)[source]

bytes_receivedheaders_received 信号处理器中引发,以指示不应再为响应下载更多字节。

布尔参数 fail 控制哪个方法将处理生成的响应

  • 如果 fail=True (默认),则调用请求的 errback。响应对象可作为 StopDownload 异常的 response 属性使用,该属性又作为接收到的 Failure 对象的 value 属性存储。这意味着在定义为 def errback(self, failure) 的 errback 中,可以通过 failure.value.response 访问响应。

  • 如果 fail=False,则改为调用请求的回调。

在这两种情况下,响应的主体可能会被截断:主体包含直到引发异常时接收到的所有字节,包括在引发异常的信号处理器中接收到的字节。此外,响应对象在其 flags 属性中被标记为 "download_stopped"

注意

fail 是一个仅限关键字的参数,即引发 StopDownload(False)StopDownload(True) 将引发一个 TypeError

有关 bytes_receivedheaders_received 信号以及 Stopping the download of a Response 主题的更多信息和示例,请参阅相关文档。