异常
内置异常参考
以下是 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
可以在 spider_idle
信号处理器中引发此异常,以防止爬虫被关闭。
DropItem
Item Pipeline 阶段必须引发此异常,以停止处理 Item。更多信息请参阅 Item Pipeline。
IgnoreRequest
调度器或任何 downloader middleware 都可以引发此异常,表明请求应该被忽略。
NotConfigured
此异常可以由某些组件引发,以指示它们将保持禁用状态。这些组件包括
扩展
Item pipelines
Downloader middlewares
Spider middlewares
必须在组件的 __init__
方法中引发此异常。
NotSupported
引发此异常以指示不支持的功能。
StopDownload
在版本 2.2 中添加。
从 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
信号以及 Stopping the download of a Response 主题的更多信息和示例,请参阅相关文档。