Scrapy python json 输出,写入前清除文件

Scrapy python json output, clear file before writing

我目前正在使用 Scrapy 收集数据并输出到 json 文件

scrapy crawl foobar -a category=foo -o bar.json

虽然这将附加到 bar.json 文件而不是重写它。我想清除文件并重写它,是否可以使用 scrapy 参数?

或者我需要先用 scrapy 清除它吗?

非常感谢。

目前没有针对此问题的自动解决方案,尽管 GitHub 中存在关于此主题的未解决问题。

这意味着您必须在启动抓取之前删除该文件。

一个解决方法是编写一个项目导出器,它在初始化时删除输出文件(如果您已经存在,则导出项目)。

除了@GHaijba 所说的之外,另一种解决方案是创建您自己的管道,然后您可以对任何文件应用任何您想要的操作。

例如, 您可以检查该文件是否存在。然后,您可以将其清除或附加日期。

您可以写入不同的文件。

您也可以清除管道中的一些项目,因为在您的蜘蛛中这样做不是一个好习惯

您可以先删除输出文件,然后使用;

开始抓取新数据

rm output_file_name.csv;爬行 spider_name -o output_file_name.csv

修改脚本如下:

class MySpider(Spider):
    """
    Main crawler
    """
    name = "mucrawler"
    allowed_domains = ["sss.com"]
    start_urls = ["https://www.sdsd/rov/"]

    "Empty output file"
    f = open("bar.json", 'w').close()

    def parse(self, response):
        titles = response.css("td.offer")

覆盖提要已于 2020 年 8 月 17 日添加到 scrapy PR #4512。您可以使用 -O 标志进行覆盖,最终命令将如下所示:

scrapy crawl foobar -a category=foo -O bar.json

您还可以添加行 open(LOG_FILE, "w+").close(),其中 LOG_FILE 是您 settings.py 中的日志文件的名称。这将打开、清除和关闭它。