scrapy shell:将结果输出到文件

时间:2016-12-20 09:20:51

标签: python csv scrapy output

我如何在scrapy shell中输出结果到文件,最好是csv?

我在bpython shell中列出了一些有趣的元素,我可以对其进行item。但是如何将其重定向到文件?

2 个答案:

答案 0 :(得分:4)

进入shell后,您可以使用Python做任何想做的事情。例如,这包括使用jsoncsv模块从/向文件读取/写入数据。

但是,既然我们正在讨论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使用固定标题。