【问题标题】:Terminate Scrapy if a condition is met如果满足条件,则终止 Scrapy
【发布时间】:2014-05-27 08:40:06
【问题描述】:

我在 python 中使用 scrapy 编写了一个刮板。它包含 100 个 start_url。

一旦满足条件,我想终止抓取过程。 即终止对特定 div 的抓取。通过终止我的意思是它应该停止抓取所有的网址。

有没有可能

【问题讨论】:

  • 你可以看看CloseSpider Exception,但是仍在进行中的请求(HTTP 请求已发送,响应尚未收到)仍将被解析。但不会处理任何新请求。
  • @paultrmbrth 在使用这个时遇到以下错误:引发 CloseSpider('bandwidth_exceeded') exceptions.NameError: global name 'CloseSpider' is not defined
  • 只需在源文件的开头添加这一行:from scrapy.exceptions import CloseSpider
  • @paultrmbrth 您应该将其发布为答案。值得被接受。

标签: python scrapy


【解决方案1】:

您正在寻找的是CloseSpider exception。

在源文件顶部的某处添加以下行:

from scrapy.exceptions import CloseSpider

当您检测到满足终止条件时,只需执行类似的操作

        raise CloseSpider('termination condition met')

在您的回调方法中(而不是返回或产生Item 或Request)。

请注意,仍在进行中的请求(已发送 HTTP 请求,尚未收到响应)仍将被解析。但不会处理任何新请求。

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    相关资源
    最近更新 更多