如何在遇到第一个异常时进行scrapy抓取并退出?

Udi*_*Udi 20 python exception scrapy

出于开发目的,我想在第一个异常(在蜘蛛或管道中)发生时立即停止所有scrapy爬行活动.

有什么建议?

tok*_*rev 13

从0.11开始,有CLOSESPIDER_ERRORCOUNT:

一个整数,指定关闭spider之前要接收的最大错误数.如果蜘蛛生成的错误数超过该数量,则将使用closespider_errorcount原因关闭它.如果为零(或未设置),则不会因错误数量而关闭蜘蛛.

如果设置为1,则蜘蛛将在第一个异常时关闭.


imw*_*nxu 11

在spider中,你可以抛出CloseSpider异常.

def parse_page(self, response):
    if 'Bandwidth exceeded' in response.body:
        raise CloseSpider('bandwidth_exceeded')
Run Code Online (Sandbox Code Playgroud)

对于其他人(中间件,管道等),您可以手动调用close_spider作为提到的akhter.


akh*_*hab 5

它完全取决于您的业务逻辑。但这对你有用

crawler.engine.close_spider(self, 'log message')
Run Code Online (Sandbox Code Playgroud)

推荐阅读

推荐阅读

最糟糕的解决方案是

import sys

sys.exit("SHUT DOWN EVERYTHING!")
Run Code Online (Sandbox Code Playgroud)