处理 Scrapy 中的所有 yield 项

目前我有一个 Scrapy Spider 在 parse 方法上产生各种项目。有没有什么办法可以得到所有已经被 yield 的项,而不管 parse 方法被调用了多少次?



慕莱坞森
浏览 175回答 3
3回答

皈依舞

使用管道,您将能够将所有项目累积到类似结构的数组中(process_item在您的管道中):self.items.append(item) # I use self.items class variable defined at your pipeline并在spider_closed.

撒科打诨

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

MMMHUHU

我不确定您所说的获取物品是什么意思。如果你想将它们导出到一个文件中,你可以使用feed export,通过像这样执行蜘蛛:scrapy crawl my_spider -o my_data.csv它支持其他扩展,检查那些链接。从你的标题看来你想要处理产生的项目,在这种情况下你需要一个ItemPipeline。从文档:在一个项目被蜘蛛抓取后,它被发送到项目管道,它通过几个顺序执行的组件来处理它。...项目管道的典型用途是:清理 HTML 数据验证抓取的数据(检查项目是否包含某些字段)检查重复项(并删除它们)将抓取的项目存储在数据库中parse这两种方法的运行都与方法被调用的次数无关。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python