2012-03-01 107 views

回答

2

它純粹依賴於您的業務邏輯。但是這會爲你工作

crawler.engine.close_spider(self, 'log message') 

Suggested Reading

Suggested Reading

和最壞的解決方案是

import sys 

sys.exit("SHUT DOWN EVERYTHING!") 
7

在蜘蛛,你可以隨便扔CloseSpider例外。

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

對於其他人(中間件,管道等),你可以手動調用close_spider提到akhter。

+0

在scrapy中捕捉蜘蛛異常的理想場所是什麼?謝謝 – 2017-07-17 14:34:53

10

由於0.11,有CLOSESPIDER_ERRORCOUNT

一個整數,它指定在關閉蜘蛛之前接收錯誤的最大數目。如果蜘蛛生成的錯誤數量超過了這個數量,它將通過closespider_errorcount原因關閉。如果爲零(或未設置),則蜘蛛將不會按錯誤數量關閉。

如果它設置爲1,那麼蜘蛛將在第一次例外時關閉。

+0

謝謝!我有同樣的問題,這對我有用。 – 2016-06-28 17:48:46

+3

它不適用於管道 – 2016-11-26 02:26:23