首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrapy在所有爬行器关闭时获得通知

Scrapy在所有爬行器关闭时获得通知
EN

Stack Overflow用户
提问于 2020-03-26 04:50:16
回答 2查看 162关注 0票数 0

我正在使用django开始抓取抓取

代码语言:javascript
复制
scrapyd = ScrapydAPI('http://localhost:6800')
spiders = scrapyd.list_spiders("default")
for spider in spiders:
        scrapyd.schedule("default", spider, list_id=list.id, spiders_number=3)

我可以基于list_id连接所有与单个请求相关的爬虫吗?我希望当所有的蜘蛛都完成他们的工作时,我能得到一个信息。将信息从spider发送到django很简单(我可以获得django模型实例并更新它)。但我不知道当前的爬虫是否是最后一个正在运行的蜘蛛。

在蜘蛛之间交换数据是可能的吗?有什么众所周知的方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2020-03-26 19:32:47

scrapy管道中有一个名为close_spider的事件方法,它在爬行器完成和关闭之前被调用。

https://docs.scrapy.org/en/latest/topics/item-pipeline.html

但是,由于您正在遍历所有的蜘蛛,这将是无用的。我能想到的唯一解决方案是在最后一个循环中调用通知。

票数 0
EN

Stack Overflow用户

发布于 2020-03-27 11:39:05

Scrapyd-API不会同时运行多个爬虫(作业),所以从终端中的scrapyd.list_spiders("default")获取列表,列表中的最后一个爬虫将是最后运行的一个。然后简单地在蜘蛛中添加

代码语言:javascript
复制
def close(self):
    #send notification()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60857187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档