You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy导出JSON为单行,如何生成格式化的JSON输出?

问题:Scrapy导出JSON时如何生成格式化的多行格式?

我在用Scrapy写爬虫,执行命令 scrapy crawl mobileir -o myjayson.json -s FEED_EXPORT_ENCODING=utf-8 导出JSON文件时,得到的是单行压缩格式的JSON,想生成带缩进的格式化JSON,该怎么做?

我的爬虫代码如下:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
                'https://www.ijpsat.com/'
    ]

    def parse(self, response):
        yield {
            'test1':response.css('#home a::text').get(),
            'test2':response.css('#about a::text').get(),
            'test3':response.css('#search a::text').get()
        }

当前导出的JSON输出是:

[
{"test1": "Home", "test2": "About", "test3": "Search"}
]
解决方案

有两种简单方式可以生成带缩进的格式化JSON:

方法一:命令行添加缩进参数

在导出命令中追加 -s FEED_EXPORT_INDENT=4(数字4表示缩进空格数,可根据需求调整为2、4等),完整命令如下:

scrapy crawl mobileir -o myjayson.json -s FEED_EXPORT_ENCODING=utf-8 -s FEED_EXPORT_INDENT=4

执行该命令后,导出的JSON会自动格式化,示例输出:

[
    {
        "test1": "Home",
        "test2": "About",
        "test3": "Search"
    }
]

方法二:全局配置默认缩进

如果希望所有爬虫导出JSON时都默认使用格式化格式,可以在项目的settings.py文件中添加以下配置:

FEED_EXPORT_INDENT = 4

之后执行导出命令时,无需额外添加参数,就能直接生成带缩进的JSON文件。

内容的提问来源于stack exchange,提问作者Danii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:57:11