使用Akshare获取股票历史数据
1.项目地址
AKShare 项目概览 — AKShare 1.17.26 文档
https://github.com/akfamily/akshare
2.获取A股股票全量历史数据
底层访问东方财富网获取数据,东方财富设置了反爬 ,解决策略降速 + 换 UA + 重试 + 必要时换接口 即可绕过 RemoteDisconnected
问题
- 先获取A股所有的股票代码;
- 再获取2013年以来所有的股票数据
- 导出生成csv文件
import akshare as ak, pandas as pd, time, random
from datetime import datetimeUA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
codes = ak.stock_zh_a_spot_em()["代码"].tolist()def safe_fetch(code, start="20130101"):for i in range(3): # 最多重试 3 次try:df = ak.stock_zh_a_hist(symbol=code, period="daily",start_date=start,end_date=datetime.today().strftime("%Y%m%d"),adjust="hfq")if not df.empty:return dfexcept Exception as e:print(f"{code} 第 {i+1} 次失败: {e}")time.sleep(random.uniform(3, 6)) # 随机 sleep 3-6 秒return pd.DataFrame() # 彻底失败返回空表for code in codes:df = safe_fetch(code)if not df.empty:df.to_csv(f"stock_{code}.csv", index=False)time.sleep(random.uniform(2.5, 4)) # 批次间隔