Python多次调用AlphaVantage API失败,仅返回最后一项数据
问题原因及解决办法
- 核心问题:你的请求和数据解析代码不在循环体内,循环仅修改了
url变量,但最后只执行了一次requests.get(url),自然只会获取最后一次循环的ABC对应数据。 - 解决步骤:
- 将请求和解析代码缩进,放入循环内部,确保每个标的都发起一次请求;
- 用列表这类容器存储每个标的的数据,避免每次循环覆盖之前的结果;
- 可以对符号列表去重,避免重复请求同一个标的浪费配额。
修正后的代码:
import requests symbols = ["XYZW", "XYZW", "ABC"] # 去重处理,避免重复请求同一标的 unique_symbols = list(set(symbols)) # 用列表存储所有标的的返回数据 all_data = [] for s in unique_symbols: url = 'https://www.alphavantage.co/query?function=BALANCE_SHEET&symbol={}&apikey=apikey'.format(s) r = requests.get(url) data = r.json() all_data.append(data) # 此时all_data中包含所有标的的字典数据 print(all_data)
补充说明:
- AlphaVantage免费版有请求频率限制(一般5次/分钟、500次/天),批量请求时建议添加延迟(比如
time.sleep(12))避免触发限制; - 不存在自动排序的问题,你只拿到最后一项是因为循环结束后仅执行了一次请求,和排序无关。
内容的提问来源于stack exchange,提问作者JNC4
相关产品推荐
相关产品推荐

