异常
内置异常参考
以下是 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
此异常必须由项目管道阶段引发,以停止处理某个 Item。更多信息请参见 项目管道。
IgnoreRequest
此异常可由调度器或任何下载器中间件引发,以指示应忽略该请求。
NotConfigured
此异常可由某些组件引发,以指示它们将保持禁用状态。这些组件包括
扩展 (Extensions)
项目管道
下载器中间件
爬虫中间件
此异常必须在组件的 __init__ 方法中引发。
NotSupported
引发此异常表示不支持的功能。
StopDownload
从 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 信号以及 停止响应下载 主题的更多信息和示例,请参见文档。