异常¶
内置异常参考¶
这里列出了 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¶
此异常可以在 spider_idle
信号处理程序中引发,以防止爬虫关闭。
DropItem¶
项目管道阶段必须引发此异常以停止处理项目。有关更多信息,请参见 项目管道。
IgnoreRequest¶
调度程序或任何下载器中间件可以引发此异常,以指示应忽略该请求。
NotConfigured¶
某些组件可以引发此异常以指示它们将保持禁用状态。这些组件包括
扩展
项目管道
下载器中间件
爬虫中间件
此异常必须在组件的 __init__
方法中引发。
NotSupported¶
引发此异常以指示不支持的功能。
StopDownload¶
版本 2.2 中的新功能。
从 bytes_received
或 headers_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_received
和 headers_received
信号以及 停止响应的下载 主题的文档,以获取其他信息和示例。