Scrapy:覆盖先前导出文件的命令

3

设置

我使用终端(Mac OS)的标准命令将数据导出到 .csv 文件中,例如:

scrapy crawl spider -o spider_ouput.csv 

问题

在导出新的spider_output.csv时,Scrapy会将其附加到现有的spider_output.csv中。

我可以想到两个解决方案:

  1. 命令Scrapy进行覆盖而不是附加
  2. 在爬行之前命令终端删除现有的spider_output.csv

我已经读到了(让我吃惊的是)Scrapy目前无法执行1号。一些人已经提出了解决方法,但我似乎无法使工作。

我已经找到了一个解答来解决第二个问题,但我也无法使其工作。

有人可以帮帮我吗?也许有第三个解决方案我没有想到的?

3个回答

12

对于此功能,Scrapy存在一个未解决的问题:

https://github.com/scrapy/scrapy/issues/547

在该问题线程中提出了一些解决方案:

scrapy runspider spider.py -t json --nolog -o - > out.json

或者在运行Scrapy爬虫之前删除输出:

rm data.jl; scrapy crawl myspider -o data.jl

谢谢你的回答。我尝试了你的删除代码,它很有效! :) - LucSpan
@LucSpan 太好了,如果它解答了你的问题,请不要忘记点击答案左侧的“接受答案”按钮。 - Granitosaurus

1
使用大O:
scrapy crawl spider -O spider_ouput.csv 

2
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0

选项-t定义文件格式,如json、csv等。

选项-o FILE将抓取的项目转储到FILE中(使用-表示标准输出)。

>filename将输出导入到filename中。

总之,我们可以覆盖先前的导出文件:

替换输出文件而不是追加:

scrapy crawl spider -t csv -o - >spider.csv

或者以json格式:

scrapy crawl spider -t json -o - >spider.json


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接