我如何在scrapy shell中输出结果到文件,最好是csv?
我在bpython
shell中列出了一些有趣的元素,我可以对其进行item
。但是如何将其重定向到文件?
答案 0 :(得分:4)
进入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()
当您将-o
选项添加到crawl
命令以将输出保存到文件时,这是Scrapy所做的精简版。
答案 1 :(得分:0)
以下是否回答了您的问题?
https://doc.scrapy.org/en/latest/topics/feed-exports.html
实施抓取工具时最常需要的功能之一是能够正确存储抓取的数据,而且通常,这意味着生成带有抓取数据的“导出文件”(通常称为“导出Feed”)被其他系统消耗。 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使用固定标题。