例外情况

内置异常引用

下面是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[源代码]

某些组件可能会引发此异常,以指示它们将保持禁用状态。这些组成部分包括:

  • 扩展

  • 项目管道

  • 下载器中心件

  • 蜘蛛中心件

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

NotSupported

exception scrapy.exceptions.NotSupported[源代码]

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

StopDownload

2.2 新版功能.

exception scrapy.exceptions.StopDownload(fail=True)[源代码]

从一个 bytes_received 信号处理程序,指示不应为响应下载更多字节。

这个 fail 布尔参数控制将处理结果响应的方法:

  • 如果 fail=True (默认),调用请求errback。响应对象可用作 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 信号和 停止下载响应 主题以获取更多信息和示例。