【发布时间】:2016-12-20 09:20:50
【问题描述】:
如何在 scrapy shell 中输出结果到一个文件,最好是 csv?
我的bpython shell 中有一个有趣元素的列表,我可以将它们设为item。但是如何将其重定向到文件?
【问题讨论】:
如何在 scrapy shell 中输出结果到一个文件,最好是 csv?
我的bpython shell 中有一个有趣元素的列表,我可以将它们设为item。但是如何将其重定向到文件?
【问题讨论】:
一旦你进入 shell,你就可以使用 Python 做任何你想做的事情。例如,这包括使用json 或csv 模块从/向文件读取/写入数据。
但是,既然我们在谈论 Scrapy 和 csv,让我们使用 Scrapy 的 CsvItemExporter 来完成工作:
from scrapy.exporters import CsvItemExporter
items = [{'one': 'data', 'two': 'more data'}, {'one': 'info', 'two': 'more info'}]
with open('data.csv', 'w') as f:
exporter = CsvItemExporter(file=f, fields_to_export=['one', 'two'])
exporter.start_exporting()
for i in items:
exporter.export_item(i)
exporter.finish_exporting()
这是 Scrapy 在 crawl 命令中添加 -o 选项以将输出保存到文件时所做的简化版本。
【讨论】:
以下是否回答了您的问题?
https://doc.scrapy.org/en/latest/topics/feed-exports.html
实现爬虫时最常需要的功能之一是能够正确存储爬取的数据,这通常意味着使用爬取的数据生成“导出文件”(通常称为“导出提要”)被其他系统消耗。 Scrapy 通过 Feed Exports 提供了开箱即用的此功能,它允许您使用多种序列化格式和存储后端生成包含抓取项目的 Feed。
https://doc.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-format-csv
CSV
FEED_FORMAT: csv
使用的导出器:CsvItemExporter
要指定要导出的列及其顺序,请使用 FEED_EXPORT_FIELDS。其他 Feed 导出器也可以使用此选项,但它对 CSV 很重要,因为与许多其他导出格式不同,CSV 使用固定标题。
【讨论】: