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
相关产品推荐
相关产品推荐

