【发布时间】:2012-12-12 10:10:00
【问题描述】:
我正在编写一个scrapy 管道,该管道将调用一个函数来清除我们cdn 的边缘服务器中的已抓取网址。我想出了如何轻松地存储访问过的 url 列表,但问题是知道爬虫何时完成。
cdn的api以100个为一组获取url,所以我可以很容易地每100个url调用它的clear函数,但是如果有543个url要抓取,最后43个不会被发送到cdn的clear函数中。
我一直在查看scrapy信号文档,但我不知道是否
- spider_close 信号在收到最后一个请求或所有项目都通过管道时调用。如果是后者,不知道用最后43个url调用api已经来不及了
- 另一种选择是添加一个扩展,当它接收到spider_close信号时调用cdn的api,但是它如何知道蜘蛛看到的所有url?我可以在项目管道中构建它们的列表,但是如何将其添加到扩展中? (我也许可以使用我刚刚想到的 item_scraped 信号。)
是的,有没有办法知道,在管道内,什么时候没有更多的项目来了?是否有多个管道同时运行,或者每个管道都是单例的?
【问题讨论】:
标签: python signals scrapy pipeline