我正在使用Scrapy抓取多个网站,并且需要输出为JSON。我设置了命令:
scrapy crawl MySpider -o "path/to/output.json" -t json
然而,现在我需要在输出中添加统计数据 - 请求列表,错误,错误类型(404s等)。另外,我需要重写输出文件,而不是附加到。我无法找到如何执行此操作的任何说明。
答案 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