嵌套JSON结构分页API拉取数据报AttributeError问题求解
解决方案
错误原因
报错的核心是变量名冲突:
- 初始你将
sample_data定义为存储全量数据的列表 - 循环请求时你执行了
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--
相关产品推荐
相关产品推荐

