当前位置: 首页 > 面试题库 >

遇到第一个异常时,如何使草率的爬网中断并退出?

公孙高轩
2023-03-14
问题内容

出于开发目的,我想在发生第一个异常(在蜘蛛网或管道中)后立即停止所有抓取抓取活动。

有什么建议吗?


问题答案:

在Spider中,您可以抛出CloseSpider异常。

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

对于其他(中间件,管道等),您可以按照akhter所述手动调用close_spider。

从0.11开始,存在CLOSESPIDER_ERRORCOUNT

一个整数,指定在关闭蜘蛛网之前要接收的最大错误数。如果蜘蛛产生的错误数量超过了该数目,它将以closespider_errorcount原因关闭。如果为零(或未设置),则蜘蛛不会因错误数量而关闭。

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



 类似资料:
  • 我在junit测试中使用mockito。如何使异常发生,然后断言它有(泛型伪代码)

  • 我在尝试使用iText编辑pdf文档时遇到以下异常。这个问题是非常零星的,就像有时它是工作的,有时它是抛出错误。 下面是我用来编辑的代码:

  • 在网络爬虫运行时出现异常,若不处理则会因报错而终止运行,导致爬取数据中断,所以异常处理还是十分重要的。 urllib.error可以接收有urllib.request产生的异常。urllib.error有两个类,URLError和HTTPError。 URLError内有一个属性:reason 返回错误的原因 # 测试URLError的异常处理 from urllib import request

  • 问题内容: Visual Studio有一个选项,可以在引发未处理的异常时自动将其插入调试器,Eclipse是否具有类似的功能? 问题答案: 即使未捕获到这些异常,您也可以定义要在其上创建断点的确切的异常列表(应该等效于“ unhandled”)

  • 问题内容: 在大多数情况下,我将使用异常来检查代码中的条件,我想知道何时才是使用断言的适当时间? 例如, 您能指出断言如何适合这里吗?我应该使用断言吗? 似乎我从未在生产代码中使用断言,而仅在单元测试中看到断言。我确实知道,在大多数情况下,我可以像上面一样使用异常来进行检查,但是我想知道“专业”地执行异常的适当方法。 问题答案: 断言应用于检查不应发生的事情,而异常应用于检查可能发生的事情。 例如

  • 问题内容: 这似乎是一个愚蠢的问题,但是我无法弄清楚如何在Intellij Idea中调试异常。谷歌搜索也无济于事。 我尝试创建异常断点。当IDEA中断时,我希望它能给我一个调用堆栈,显示导致该方法引发异常的方法以及自动监视窗口,就像Visual Studio的调试工具一样。相反,它显示有关或的各种乱码消息,但在运行时没有实际异常的迹象。 那么到底应该使用IDEA的异常断点如何呢? 问题答案: 我