scrapy 2.3 內(nèi)置異常引用

2021-06-17 09:31 更新

下面是scrapy中包含的所有異常及其用法的列表。

CloseSpider

exceptionscrapy.exceptions.CloseSpider(reason='cancelled')

可以從蜘蛛回調(diào)中引發(fā)此異常以請(qǐng)求關(guān)閉/停止蜘蛛。支持的參數(shù):

參數(shù)

reason (str) -- 關(guān)閉的原因

例如::

def parse_page(self, response):
    if 'Bandwidth exceeded' in response.body:
        raise CloseSpider('bandwidth_exceeded')

DontCloseSpider

exceptionscrapy.exceptions.DontCloseSpider

此異常可以在 ?spider_idle? 防止蜘蛛關(guān)閉的信號(hào)處理程序。

DropItem

exceptionscrapy.exceptions.DropItem

必須由項(xiàng)管道階段引發(fā)的異常才能停止處理項(xiàng)。有關(guān)詳細(xì)信息,請(qǐng)參閱 項(xiàng)目管道 .

IgnoreRequest

exceptionscrapy.exceptions.IgnoreRequest

調(diào)度程序或任何下載器中間件都可以引發(fā)此異常,以指示應(yīng)忽略請(qǐng)求。

NotConfigured

exceptionscrapy.exceptions.NotConfigured

某些組件可能會(huì)引發(fā)此異常,以指示它們將保持禁用狀態(tài)。這些組成部分包括:

擴(kuò)展項(xiàng)目管道下載器中心件蜘蛛中心件

必須在組件的中引發(fā)異常 ?__init__? 方法。

NotSupported

exceptionscrapy.exceptions.NotSupported

引發(fā)此異常以指示不支持的功能。

StopDownload

2.2 新版功能.

exceptionscrapy.exceptions.StopDownload(fail=True)

從一個(gè) ?bytes_received? 信號(hào)處理程序,指示不應(yīng)為響應(yīng)下載更多字節(jié)。

這個(gè) ?fail? 布爾參數(shù)控制將處理結(jié)果響應(yīng)的方法:

  • 如果 ?fail=True? (默認(rèn)),調(diào)用請(qǐng)求errback。響應(yīng)對(duì)象可用作 ?response? 的屬性 ?StopDownload? 異常,它又存儲(chǔ)為 ?value? 接收的屬性 ?Failure? 對(duì)象。這意味著在一個(gè)定義為 ?def errback(self, failure)? ,但可以訪問(wèn)響應(yīng) ?failure.value.response? .
  • 如果 ?fail=False? ,而是調(diào)用請(qǐng)求回調(diào)。

在這兩種情況下,響應(yīng)的主體都可能被截?cái)啵褐黧w包含在引發(fā)異常之前接收到的所有字節(jié),包括在引發(fā)異常的信號(hào)處理程序中接收到的字節(jié)。另外,響應(yīng)對(duì)象標(biāo)記為 ?"download_stopped"? 在其 ?Response.flags? 屬性。

注解

?fail? 是一個(gè)僅限關(guān)鍵字的參數(shù),即升高 ?StopDownload(False)? 或 ?StopDownload(True)? 將提高 ?TypeError? .

有關(guān) ?bytes_received? 信號(hào)和 停止下載響應(yīng) 主題以獲取更多信息和示例。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)