【问题标题】:Store scrapy items to process after spider completes在蜘蛛完成后存储要处理的scrapy项目
【发布时间】:2012-12-12 10:10:00
【问题描述】:

我正在编写一个scrapy 管道,该管道将调用一个函数来清除我们cdn 的边缘服务器中的已抓取网址。我想出了如何轻松地存储访问过的 url 列表,但问题是知道爬虫何时完成。

cdn的api以100个为一组获取url,所以我可以很容易地每100个url调用它的clear函数,但是如果有543个url要抓取,最后43个不会被发送到cdn的clear函数中。

我一直在查看scrapy信号文档,但我不知道是否

  1. spider_close 信号在收到最后一个请求或所有项目都通过管道时调用。如果是后者,不知道用最后43个url调用api已经来不及了
  2. 另一种选择是添加一个扩展,当它接收到spider_close信号时调用cdn的api,但是它如何知道蜘蛛看到的所有url?我可以在项目管道中构建它们的列表,但是如何将其添加到扩展中? (我也许可以使用我刚刚想到的 item_scraped 信号。)

是的,有没有办法知道,在管道内,什么时候没有更多的项目来了?是否有多个管道同时运行,或者每个管道都是单例的?

【问题讨论】:

    标签: python signals scrapy pipeline


    【解决方案1】:

    所以我发现当蜘蛛完成爬取后关闭并且一切都通过管道时,每个管道中都会调用一个函数,即

    def close_spider(self, spider):
        pass
    

    还有一个在启动时调用的函数,就是

    def open_spider(self, spider):
        pass
    

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 2011-02-20
      • 1970-01-01
      相关资源
      最近更新 更多