Exceptions (异常)
Built-in Exceptions reference (内置异常参考)
以下是 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]
项目管道阶段必须抛出的异常,以停止处理某个 Item。更多信息请参见Item Pipeline。
IgnoreRequest
exception scrapy.exceptions.IgnoreRequest[source]
这个异常可以由调度器或任何下载器中间件抛出,以指示应忽略该请求。
NotConfigured
exception scrapy.exceptions.NotConfigured[source]
这个异常可以由某些组件抛出,以指示它们将保持禁用状态。这些组件包括:
- 扩展
- Item 管道
- 下载器中间件
- 爬虫中间件
异常必须在组件的 __init__ 方法中抛出。
NotSupported
exception scrapy.exceptions.NotSupported[source]
抛出此异常表示不支持某个功能。
StopDownload
从 2.2 版开始新增。
exception scrapy.exceptions.StopDownload(fail=True)[source]
从 bytes_received 或 headers_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_received 和 headers_received 信号的文档以及停止下载响应主题。