目前我有一个 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
.
撒科打诨
TA贡献1934条经验 获得超2个赞
通常有两种方法可以做到这一点。
首先,您可以使用命令将输出简单地保存在 JSON 文件中scrapy crawl my_spider -o my_data.json
。其次,您可以编写一个管道并将输出存储在任何数据库中以形成您想要的结构。
MMMHUHU
TA贡献1834条经验 获得超8个赞
我不确定您所说的获取物品是什么意思。如果你想将它们导出到一个文件中,你可以使用feed export,通过像这样执行蜘蛛:
scrapy crawl my_spider -o my_data.csv
它支持其他扩展,检查那些链接。
从你的标题看来你想要处理产生的项目,在这种情况下你需要一个ItemPipeline。从文档:
在一个项目被蜘蛛抓取后,它被发送到项目管道,它通过几个顺序执行的组件来处理它。
...
项目管道的典型用途是:
清理 HTML 数据
验证抓取的数据(检查项目是否包含某些字段)
检查重复项(并删除它们)
将抓取的项目存储在数据库中
parse
这两种方法的运行都与方法被调用的次数无关。
添加回答
举报
0/150
提交
取消