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

如何处理字典类型API响应?非标准JSON读取存储与CSV导出

问题根因
  • 你调用的analyze()返回值本身就是Python原生字典对象,不存在“非标准JSON”的问题。json.dump()的作用是把内存里的Python字典/列表序列化成JSON格式写入磁盘,要读取字段不需要先转成JSON文件再反向解析,直接操作返回的output字典对象即可。
  • CSV写入失败有两个常见原因:一是你贴的代码里json.dump()没有缩进,不在with open()的代码块内,会触发文件操作错误;二是pages列表内的单条数据存在嵌套结构(比如样例里的keywords是「[出现频次, 关键词文本]」组成的二维数组),CSV是纯二维表格格式,不支持直接写入嵌套的列表、字典类型,直接传值会报类型错误或者写入乱码。
字段读取方法

直接按键从字典里取值即可,不需要绕JSON文件中转:

site = 'http://www.micxxxxnk.com'
output = analyze(site, analyze_headings=True, analyze_extra_tags=True)

# 取所有页面数据,返回值是列表,每个元素对应一个页面的分析结果
all_pages = output["pages"]

# 遍历读取单页字段示例
for page in all_pages:
    page_url = page["url"]
    page_title = page["title"]
    page_word_count = page["word_count"]
    # 嵌套字段按需处理,比如把关键词提取出来拼成字符串
    keyword_list = [kw_pair[1] for kw_pair in page["keywords"]]
CSV导出正确实现

先把嵌套结构拍平成普通字符串、数字类型,再调用csv模块写入,注意文件参数配置避免乱码、空行问题:

import csv
import json

site = 'http://www.micxxxxnk.com'
output = analyze(site, analyze_headings=True, analyze_extra_tags=True)
all_pages = output["pages"]

# 定义CSV导出列
csv_columns = ["url", "title", "description", "word_count", "keywords"]

with open("seo_analyze_result.csv", "w", encoding="utf-8-sig", newline="") as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=csv_columns)
    writer.writeheader()
    for page in all_pages:
        # 处理嵌套的关键词字段,拼成逗号分隔的字符串
        processed_keywords = ",".join([kw[1] for kw in page.get("keywords", [])])
        # 构造写入行,缺字段时用默认值兜底,避免KeyError
        row = {
            "url": page.get("url", ""),
            "title": page.get("title", ""),
            "description": page.get("description", ""),
            "word_count": page.get("word_count", 0),
            "keywords": processed_keywords
        }
        writer.writerow(row)

# 留存JSON备份,注意json.dump要放在with代码块内
with open("output.json", "w", encoding="utf-8") as json_file:
    json.dump(output, json_file, indent=4, ensure_ascii=False)
注意事项
  • 写CSV时必须加newline=""参数,否则导出的文件会隔行出现空行;用utf-8-sig编码是为了兼容Excel直接打开不出现中文乱码
  • 字典取值优先用get(键, 默认值)写法,避免API返回字段缺失时程序直接崩溃
  • 后续要存数据库时,类似keywords这种多值字段,要么拆成关联表存储,要么序列化成JSON字符串存字段,不要直接传入嵌套对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:21:22