You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将抓取数据与JSON响应逐行导出至CSV文件?

如何将JSON响应与抓取数据逐行导出至CSV文件

嘿,我来帮你搞定这个需求!要把JSON响应和抓取到的数据按相同格式逐行写入CSV,其实用Python的工具就能轻松实现,下面给你两种常用的方案,你可以根据自己的场景选择:

方案一:用Python标准库csv(轻量无依赖)

如果你的数据量不大,或者不想额外安装第三方库,用Python自带的csv模块就足够了,步骤很清晰:

  1. 先把JSON响应解析成Python的字典列表(如果还没解析的话,用json.loads()处理),同时确保抓取的数据也是同格式的字典列表(每个字典对应CSV的一行,键对应表头)。
  2. 定义CSV的表头,要和数据里的键完全对应。
  3. csv.DictWriter来自动匹配表头和数据,逐行写入。

代码示例

import csv
import json

# 示例:解析后的JSON响应数据(字典列表)
json_response = json.loads('[{"id":1,"title":"JSON文章1","content":"JSON内容1"},{"id":2,"title":"JSON文章2","content":"JSON内容2"}]')

# 示例:抓取到的数据(格式和JSON响应完全一致)
scraped_data = [
    {"id":3,"title":"抓取文章1","content":"抓取内容1"},
    {"id":4,"title":"抓取文章2","content":"抓取内容2"}
]

# 合并两个数据集(如果需要写入同一个CSV)
all_data = json_response + scraped_data

# 定义CSV表头,要和数据的键一一对应
csv_headers = ["id", "title", "content"]

# 写入CSV文件
with open("combined_data.csv", "w", newline="", encoding="utf-8") as csv_file:
    # 创建DictWriter对象,绑定表头
    writer = csv.DictWriter(csv_file, fieldnames=csv_headers)
    # 先写入表头
    writer.writeheader()
    # 逐行写入每一条数据
    for row in all_data:
        writer.writerow(row)

关键细节

  • newline="":避免Windows系统下写入CSV时出现多余空行。
  • encoding="utf-8":保证中文、特殊字符不会乱码。
  • 如果JSON是嵌套结构(比如有子字典),需要先把数据扁平化成一维键值对,才能写入CSV(CSV是二维表格,不支持嵌套)。

方案二:用pandas(适合大数据/复杂处理)

如果你需要处理大量数据,或者后续还要做数据分析,pandas会更高效,代码也更简洁:

代码示例

import pandas as pd
import json

# 解析JSON响应
json_response = json.loads('[{"id":1,"title":"JSON文章1","content":"JSON内容1"},{"id":2,"title":"JSON文章2","content":"JSON内容2"}]')
# 抓取数据
scraped_data = [
    {"id":3,"title":"抓取文章1","content":"抓取内容1"},
    {"id":4,"title":"抓取文章2","content":"抓取内容2"}
]

# 转成DataFrame(pandas的表格结构)
df_json = pd.DataFrame(json_response)
df_scraped = pd.DataFrame(scraped_data)

# 合并两个表格,忽略原来的行索引
combined_df = pd.concat([df_json, df_scraped], ignore_index=True)

# 写入CSV,不包含行索引,用utf-8-sig让Excel识别编码
combined_df.to_csv("combined_data_pandas.csv", index=False, encoding="utf-8-sig")

关键细节

  • index=False:避免把pandas的行索引写入CSV。
  • utf-8-sig:解决Excel打开UTF-8编码CSV时的乱码问题。
  • 如果数据格式不一致,pandas会自动补全缺失值为NaN,你可以用fillna()来处理这些缺失值。

注意事项

  • 一定要保证JSON响应和抓取数据的字段完全一致,否则会出现数据错位或者缺失。如果字段有差异,先统一处理(比如给缺失的字段设置默认值)。
  • 如果你的数据不是字典列表,比如是单个字典或者其他格式,要先转换成列表格式再写入。

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

火山引擎 最新活动