异常

内置异常参考

这里列出了 Scrapy 中包含的所有异常及其用法。

CloseSpider

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

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

参数:

reason (str) – 关闭的原因

例如

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

DontCloseSpider

exception scrapy.exceptions.DontCloseSpider[source]

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

DropItem

exception scrapy.exceptions.DropItem[source]

项目管道阶段必须引发此异常以停止处理项目。有关更多信息,请参见 项目管道

IgnoreRequest

exception scrapy.exceptions.IgnoreRequest[source]

调度程序或任何下载器中间件可以引发此异常,以指示应忽略该请求。

NotConfigured

exception scrapy.exceptions.NotConfigured[source]

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

  • 扩展

  • 项目管道

  • 下载器中间件

  • 爬虫中间件

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

NotSupported

exception scrapy.exceptions.NotSupported[source]

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

StopDownload

版本 2.2 中的新功能。

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

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

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

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

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

在这两种情况下,响应的正文都可能被截断:正文包含在引发异常之前接收到的所有字节,包括在引发异常的信号处理程序中接收到的字节。此外,响应对象在其 Response.flags 属性中用 "download_stopped" 标记。

注意

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

有关 bytes_receivedheaders_received 信号以及 停止响应的下载 主题的文档,以获取其他信息和示例。