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

嵌套JSON结构分页API拉取数据报AttributeError问题求解

解决方案

错误原因

报错的核心是变量名冲突:

  1. 初始你将sample_data定义为存储全量数据的列表
  2. 循环请求时你执行了sample_data = response.json(),直接把接口返回的字典覆盖了原来的列表变量,后续调用列表专属的extend方法自然会报错。

修正后代码

import requests

# 存储全量数据的总列表
all_data = []
offset = 0
limit = 10000

while True:
    print("----")
    url = f"https://results.us.sampledata.com/api/reporting/v0.1.0/samples?offset={offset}&page[size]={limit}"
    headers = {"Content-Type": "application/json", "Accept-Charset": "UTF-8", "x-apikey-token": "sampletoken"}
    print("Requesting", url)
    response = requests.get(url, data={"sample": "data"}, headers=headers)
    # 单次接口返回的响应单独用变量存储,不要覆盖总列表
    page_resp = response.json()

    current_data = page_resp.get('data', [])
    if not current_data:
        # 无更多数据退出循环
        break

    # 把当前页数据追加到总列表
    all_data.extend(current_data)
    offset += 10000

# 如果你需要直接提取attributes里的字段,可按如下方式处理
# processed_list = [item['attributes'] for item in all_data]

可选优化建议

  • 可在response.json()前添加response.raise_for_status(),接口请求失败时会直接抛出异常,避免后续逻辑执行异常
  • 可根据需要添加重试逻辑,应对偶发的接口请求失败问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:03