【问题标题】:Scrapy: command to overwrite previous export fileScrapy:覆盖先前导出文件的命令
【发布时间】:2017-09-22 04:00:00
【问题描述】:

设置

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

scrapy crawl spider -o spider_ouput.csv 

问题

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

我可以想到两种解决方案,

  1. 命令 Scrapy 覆盖而不是追加
  2. 命令终端在抓取之前删除现有的spider_output.csv

我读到(令我惊讶的是)Scrapy 目前isn't able 要做 1。有些人提出了workarounds,但我似乎无法让it 工作。

我找到了解决方案 2 的 answer,但也无法使其正常工作。

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

【问题讨论】:

    标签: python scrapy export overwrite


    【解决方案1】:

    option -t 定义文件格式,如 json, csv, ...

    选项-o FILE将抓取的项目转储到文件中(使用-作为标准输出)

    >filename 管道输出到文件名

    我们得到了覆盖以前的导出文件:

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

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

    或者对于json格式:

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

    【讨论】:

      【解决方案2】:

      此功能的 scrapy 存在一个未解决的问题: https://github.com/scrapy/scrapy/issues/547

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

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

      或者在运行scrapy spider之前删除输出:

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

      【讨论】:

      • 感谢您的回答。我试过你的删除线,它有效! :)
      • @LucSpan 很好,如果它回答了您的问题,请不要忘记点击答案左侧的“接受答案”按钮。
      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2012-07-18
      • 2014-09-29
      • 2020-02-06
      相关资源
      最近更新 更多