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

如何在Python中从列表批量导入股票数据至Alpha Vantage

批量获取股票日度数据的解决方案

下面提供两种批量处理的实现方式,适配你的需求:

一、直接使用内置股票列表

如果股票代码数量不多,可以直接在代码里定义列表,循环遍历获取数据:

import pandas as pd
from alpha_vantage.timeseries import TimeSeries
import time

api_key = 'QLIFIFQWRVWXRA4U'
# 定义需要查询的股票代码列表
stock_list = ['MSFT', 'F', 'GM', 'BROS']
ts = TimeSeries(key=api_key, output_format='pandas')

for stock in stock_list:
    print(f"正在获取 {stock} 的日度数据...")
    try:
        # 获取单只股票数据
        data, meta_data = ts.get_daily(symbol=stock, outputsize='compact')
        # 将数据保存为CSV文件(可选,替换成你需要的存储方式)
        data.to_csv(f"{stock}_daily_data.csv")
        print(f"{stock} 数据获取完成,已保存到本地文件")
        # Alpha Vantage免费版有调用频率限制(5次/分钟),添加延迟避免触发限制
        time.sleep(15)
    except Exception as e:
        print(f"获取 {stock} 数据失败:{str(e)}")
        time.sleep(15)

二、从本地文件读取股票代码

如果股票代码较多,建议将代码存到文件中,再读取到列表里处理:

方式1:读取TXT文件(每行一个股票代码)

假设你有一个stock_codes.txt文件,内容格式如下:

MSFT
F
GM
BROS

对应的代码实现:

import pandas as pd
from alpha_vantage.timeseries import TimeSeries
import time

api_key = 'QLIFIFQWRVWXRA4U'
ts = TimeSeries(key=api_key, output_format='pandas')

# 读取TXT文件中的股票代码,自动过滤空行
with open('stock_codes.txt', 'r', encoding='utf-8') as f:
    stock_list = [line.strip() for line in f if line.strip()]

# 循环处理每只股票
for stock in stock_list:
    print(f"正在获取 {stock} 的日度数据...")
    try:
        data, meta_data = ts.get_daily(symbol=stock, outputsize='compact')
        data.to_csv(f"{stock}_daily_data.csv")
        print(f"{stock} 数据处理完成")
        time.sleep(15)
    except Exception as e:
        print(f"{stock} 数据获取失败:{str(e)}")
        time.sleep(15)

方式2:读取CSV文件(适合带其他信息的股票列表)

如果你的股票代码存在CSV文件中(比如有一列名为symbol),可以用Pandas读取:

import pandas as pd
from alpha_vantage.timeseries import TimeSeries
import time

api_key = 'QLIFIFQWRVWXRA4U'
ts = TimeSeries(key=api_key, output_format='pandas')

# 读取CSV文件中的symbol列
stock_df = pd.read_csv('stock_codes.csv')
stock_list = stock_df['symbol'].tolist()

# 循环处理逻辑和上面一致
for stock in stock_list:
    print(f"正在获取 {stock} 的日度数据...")
    try:
        data, meta_data = ts.get_daily(symbol=stock, outputsize='compact')
        data.to_csv(f"{stock}_daily_data.csv")
        print(f"{stock} 数据处理完成")
        time.sleep(15)
    except Exception as e:
        print(f"{stock} 数据获取失败:{str(e)}")
        time.sleep(15)

关键注意事项

  • 调用频率限制:Alpha Vantage免费版限制每分钟最多5次请求,所以必须添加time.sleep(15)来控制请求间隔,避免被限流。
  • 异常处理:加入try-except块可以防止单只股票请求失败导致整个程序中断,同时能打印错误信息排查问题。
  • 数据存储:示例中把数据保存为CSV文件,你也可以根据需求改成存入数据库或合并成一个大文件。

内容的提问来源于stack exchange,提问作者Shawn Duffy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:46:23