Python for循环多次调用API追加dict结果存入DataFrame问题
问题修复方案
你的代码存在3个核心逻辑错误,修正后即可正常收集所有第二次请求的返回结果:
错误点说明
- 调用
requests.get()得到的是Response对象,不能直接遍历或取字段,需要先调用.json()方法解析为Python字典/列表结构 - 追加操作方向写反:你现在是把公共存储的
data列表追加到单次请求结果D中,正确逻辑是把单次请求结果D追加到公共存储的data列表中 - 第二次请求未使用第一次遍历的条目作为请求参数,导致每次请求结果重复
修正后可运行代码
import requests import pandas as pd # 第一次API请求,解析返回结果 first_resp = requests.get("你的首次请求API地址") first_result = first_resp.json() # 假设首次返回的待遍历条目存在results字段,按实际返回结构调整即可 item_list = first_result["results"] data = [] for item in item_list: # 第二次请求,把首次遍历到的条目作为参数传入,示例是传item里的id字段,按实际需求调整参数 second_resp = requests.get( "你的第二次请求API地址", params={"id": item["id"]} ) second_result = second_resp.json() # 取第二次请求返回的结果字典,按实际字段名调整 D = second_result["results"] # 把单次结果追加到公共存储列表 data.append(D) # 最终生成DataFrame df = pd.DataFrame(data)
可选优化
如果你的API调用量比较大,可以添加异常捕获和超时设置,避免单次请求失败导致整个流程中断:
for item in item_list: try: second_resp = requests.get( "你的第二次请求API地址", params={"id": item["id"]}, timeout=10 ) second_resp.raise_for_status() second_result = second_resp.json() D = second_result["results"] data.append(D) except Exception as e: print(f"请求失败,对应条目id:{item['id']}, 错误信息:{e}")
内容的提问来源于stack exchange,提问作者user1904364
相关产品推荐
相关产品推荐

