为了账号安全,请及时绑定邮箱和手机立即绑定

处理 Scrapy 中的所有 yield 项

处理 Scrapy 中的所有 yield 项

慕莱坞森 2023-05-09 15:34:58
目前我有一个 Scrapy Spider 在 parse 方法上产生各种项目。有没有什么办法可以得到所有已经被 yield 的项,而不管 parse 方法被调用了多少次?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

使用管道,您将能够将所有项目累积到类似结构的数组中(process_item在您的管道中):

self.items.append(item) # I use self.items class variable defined at your pipeline

并在spider_closed.


查看完整回答
反对 回复 2023-05-09
?
撒科打诨

TA贡献1934条经验 获得超2个赞

通常有两种方法可以做到这一点。

首先,您可以使用命令将输出简单地保存在 JSON 文件中scrapy crawl my_spider -o my_data.json。其次,您可以编写一个管道并将输出存储在任何数据库中以形成您想要的结构。


查看完整回答
反对 回复 2023-05-09
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我不确定您所说的获取物品是什么意思。如果你想将它们导出到一个文件中,你可以使用feed export,通过像这样执行蜘蛛:

scrapy crawl my_spider -o my_data.csv

它支持其他扩展,检查那些链接。

从你的标题看来你想要处理产生的项目,在这种情况下你需要一个ItemPipeline。从文档:

在一个项目被蜘蛛抓取后,它被发送到项目管道,它通过几个顺序执行的组件来处理它。

...

项目管道的典型用途是:

  • 清理 HTML 数据

  • 验证抓取的数据(检查项目是否包含某些字段)

  • 检查重复项(并删除它们)

  • 将抓取的项目存储在数据库中

parse这两种方法的运行都与方法被调用的次数无关。


查看完整回答
反对 回复 2023-05-09
  • 3 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信