加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何使用Scrapy将从多个页面中删除的数据分组到一个项

发布时间:2020-12-16 21:41:27 所属栏目:Python 来源:网络整理
导读:我正在尝试收集一些关于一堆不同网站的信息.我希望每个站点生成一个项目,总结我在该站点上找到的信息,无论我在哪个页面上找到它. 我觉得这应该是一个项目管道,如duplicates filter示例,除了我需要项目的最终内容,而不是爬虫检查的第一页的结果. 因此,我尝试
我正在尝试收集一些关于一堆不同网站的信息.我希望每个站点生成一个项目,总结我在该站点上找到的信息,无论我在哪个页面上找到它.

我觉得这应该是一个项目管道,如duplicates filter示例,除了我需要项目的最终内容,而不是爬虫检查的第一页的结果.

因此,我尝试使用request.meta通过针对给定站点的各种请求传递单个部分填充的项目.为了完成这项工作,我必须让我的解析回调每次调用返回一个新的请求,直到它没有更多的页面可访问,然后最终返回完成的项目.如果我找到了我想要遵循的多个链接,那将是一种痛苦,如果调度程序因链接周期而丢弃其中一个请求,则会完全中断.

我能看到的另一种方法是将蜘蛛输出转储到json-lines并使用外部工具对其进行后处理.但我宁愿把它折叠成蜘蛛,最好是在中间件或物品管道中.我怎样才能做到这一点?

解决方法

这个丑陋的解决方案怎么样?

在管道上定义字典(defaultdict(list))以存储每站点数据.在process_item中,您只需将dict(item)附加到每个站点项的列表中,然后引发DropItem异常.然后,在close_spider方法中,您可以将数据转储到您想要的任何地方.

应该在理论上工作,但我不确定这个解决方案是最好的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读