是否可以自定义Scrapy json输出?

时间:2015-04-28 04:24:56

标签: python web-scraping scrapy scrapy-spider

我正在使用Scrapy抓取多个网站,并且需要输出为JSON。我设置了命令:

scrapy crawl MySpider -o "path/to/output.json" -t json

然而,现在我需要在输出中添加统计数据 - 请求列表,错误,错误类型(404s等)。另外,我需要重写输出文件,而不是附加到。我无法找到如何执行此操作的任何说明。

2 个答案:

答案 0 :(得分:0)

AFAIK Item Exporters仅处理项目,因此将JsonItemExporter导出统计信息发送到同一文件是不合逻辑的 - 数据结构不同。

如果要覆盖数据 - 在导出之前删除文件。

答案 1 :(得分:0)

项目输出和蜘蛛的stdout / stderr是两个独立的概念,你最好不要混合它们。
保留项目部分不变,将项目放在单独的文件中,并通过将其重定向到日志文件来收集其他有用的蜘蛛输出,如下所示:

scrapy crawl MySpider -o "path/to/output.json" > out.log 2>&1

现在您将拥有out.log文件中的所有日志,您可以在那里找到最终统计数据。请注意,如果使用正确的文件扩展名,则无需明确指定-t格式。 此外,目前无法更改附加到输出而不是覆盖的行为,因此您可以在之前删除该文件,例如:

rm output.json ; scrapy crawl MySpider -o "path/to/output.json" > out.log 2>&1