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

调用API存数据到CSV出现JSONDecodeError及多API数据写Excel问题

问题1:JSONDecodeError报错解决方案
  • 报错的核心原因是你拿到的响应内容并非合法JSON格式,大概率是请求被接口拦截,返回了空内容、错误页面或者验证页,和浏览器访问结果不一致,常见解决方法如下:
    • 添加合法请求头模拟浏览器访问,避免接口拦截:给请求加上User-Agent字段,示例如下:
      headers = {
          "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
      }
      # 发送请求时带上headers
      download = s.get(CSV_URL, headers=headers)
      
    • 增加响应校验逻辑,先确认请求成功再处理内容:
      download = s.get(CSV_URL, headers=headers)
      # 非200状态码直接抛出异常,方便定位问题
      download.raise_for_status()
      # 可以先打印前100个字符确认返回内容格式,避免把CSV/错误页当成JSON解析
      print(download.content[:100])
      
    • 如果你调用的是返回JSON的接口,先确认响应头Content-Type为application/json再调用download.json()解析,不要强行解析CSV内容为JSON。
问题2:两个API数据写入Excel不同Sheet的实现方案
  • 不强制要求用for循环,推荐用pandas库简化处理逻辑,既可以直接读取接口返回的CSV/JSON格式数据,也可以直接写入指定Sheet,示例代码如下:
    import pandas as pd
    import requests
    
    # 提前配置两个API的地址、对应Sheet名、请求头等信息
    api_config = [
        {"url": "第一个API地址", "sheet_name": "Sheet1", "headers": {}},
        {"url": "第二个API地址", "sheet_name": "Sheet2", "headers": {}}
    ]
    
    # 写入已有Excel文件,if_sheet_exists参数可控制同名Sheet的处理逻辑,replace为覆盖
    with pd.ExcelWriter("你的目标Excel文件名.xlsx", mode='a', engine='openpyxl', if_sheet_exists='replace') as writer:
        for config in api_config:
            resp = requests.get(config["url"], headers=config.get("headers", {}))
            resp.raise_for_status()
            # 接口返回CSV格式用下面的代码读取
            df = pd.read_csv(resp.content)
            # 接口返回JSON格式用下面的代码读取,可按需调整orient参数适配你的JSON结构
            # df = pd.DataFrame(resp.json())
            # 写入对应Sheet,index=False代表不写入pandas默认的索引列
            df.to_excel(writer, sheet_name=config["sheet_name"], index=False)
    
  • 上述示例用for循环遍历配置的API列表,代码更简洁易维护;如果不想用for循环,也可以单独写两次读写逻辑分别处理两个接口,功能上没有差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:06:07