异常¶
内置异常参考¶
以下是Scrapy中包含的所有异常及其用途的列表。
关闭爬虫¶
- exception scrapy.exceptions.CloseSpider(reason='cancelled')[源代码]¶
此异常可以从爬虫回调中引发,以请求关闭/停止爬虫。支持的参数:
- Parameters:
原因 (str) – 关闭的原因
例如:
def parse_page(self, response):
if "Bandwidth exceeded" in response.body:
raise CloseSpider("bandwidth_exceeded")
不要关闭爬虫¶
此异常可以在spider_idle信号处理程序中引发,以防止蜘蛛被关闭。
删除项目¶
必须由项目管道阶段引发的异常,以停止处理项目。更多信息请参见项目管道。
忽略请求¶
此异常可以由调度程序或任何下载器中间件引发,以指示应忽略该请求。
未配置¶
此异常可能由某些组件引发,以表明它们将保持禁用状态。这些组件包括:
Extensions
项目管道
下载器中间件
Spider middlewares
异常必须在组件的__init__方法中抛出。
不支持¶
此异常用于指示不支持的功能。
停止下载¶
新版本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信号的文档
以及停止下载响应主题以获取更多信息和示例。