AKShare 金融数据获取
akshare-cli 封装了 AKShare(1090+ 个函数),覆盖中国几乎所有金融数据及部分全球数据。
核心原则
- 轻量优先 — 查单只股票用
stock_individual_info_em(0.1s),不要用stock_zh_a_spot_em(59s)。详见references/known-issues.md。 - 先查后调 — 不熟悉的函数先
--full-help看参数,再 call。 - 失败必降级 — 不要在第一次失败后就告诉用户"查不到",走完三级降级。
- 控制输出量 — 全量接口加
--limit N --sort desc,确保拿到最新数据而非最旧数据。
工作流程:发现 → 查看 → 调用 → 降级
严格按以下步骤顺序执行,不要跳步。
第一步:发现函数
三种方式,按场景选一种:
A. 快捷命令(常用场景直接用,不需要搜索):
akshare-cli stock hist <代码> [--period daily|weekly|monthly] [--adjust qfq|hfq]
akshare-cli stock spot [--market all|sh|sz|bj|hk|us]
akshare-cli fund etf [代码]
akshare-cli futures hist <合约>
akshare-cli bond convertible
akshare-cli macro gdp | macro cpi
akshare-cli forex spot | forex hist [货币对]
akshare-cli index spot [--market global|cn]
B. 关键词搜索(知道大致方向时用):
akshare-cli search <关键词> # 支持中英文
英文匹配函数名(结果更全),中文匹配描述和分类路径。
| 用户意图 | 英文关键词(推荐) | 中文关键词 |
|---|---|---|
| 新闻 | news |
新闻 |
| 股票 | stock |
股票 |
| 涨停/跌停 | stock_zt |
涨停 |
| 龙虎榜 | stock_lhb |
龙虎榜 |
| 板块/概念 | stock_board |
板块 |
| 资金流向 | fund_flow |
资金流向 |
| 基金/ETF | fund |
基金 |
| 期货 | futures |
期货 |
| 债券 | bond |
债券 |
| 外汇 | forex |
外汇 |
| 宏观 | macro |
宏观 |
| 指数 | index |
指数 |
C. 按分类浏览(不确定关键词时用,按中文目录逐级查找):
akshare-cli browse # 30 个顶级分类
akshare-cli browse 股票数据/A股/历史行情数据 # 逐级深入
akshare-cli browse --func stock_zh_a_hist # 反查函数归属
第二步:查看参数(用快捷命令时可跳过)
akshare-cli call --full-help <函数名>
akshare-cli call --full-help fn1,fn2,fn3 # 批量查询
输出包括:说明、数据源、目标地址、参数(含可选值枚举)、用法示例。
仔细看参数:不同函数参数名不同(symbol/code/indicator),有些有枚举约束,日期一般是 YYYYMMDD。
第三步:调用
akshare-cli call <函数名> [--参数 值 ...] [--json] [--limit N] [--sort desc]
查最新数据时加 --sort desc --limit N,否则 --limit 会截取最旧的数据。
第四步:失败时三级降级
AKShare 底层爬取第三方网站,上游随时可能挂。失败后必须依次尝试:
第一级:换数据源后缀
_em(东方财富)失败 → 搜索 _ths(同花顺)或 _sina(新浪)同类函数:
akshare-cli search <相似关键词>
第二级:browser_use 打开目标地址抓取网页数据
--full-help 输出中有「目标地址」字段,这就是数据来源的网页 URL。用 browser_use 工具打开这个 URL,直接从网页上提取数据:
# 先获取目标地址
akshare-cli call --full-help stock_zh_a_hist
# 输出中会显示: 目标地址: https://quote.eastmoney.com/concept/sh603777.html
# 然后用 browser_use 打开该 URL,从页面中提取所需数据
第三级:WebSearch 兜底 用搜索引擎查数据:
# WebSearch "贵州茅台 财务数据 site:eastmoney.com"
触发条件:非零退出码、空数据(0 行)、网络错误。
股票代码识别
| 格式 | 含义 | 处理 |
|---|---|---|
| 6 位数字 | A 股 | 直接用 |
| 5 位数字 | 港股 | 直接用 |
| 字母开头 | 美股 | 直接用 |
| sh/sz 前缀 | 去前缀 | sh600519 → 600519 |
| 股票名称 | 查代码 | stock_info_sh_name_code / stock_info_sz_name_code |
输出选项
| 选项 | 效果 |
|---|---|
--json |
JSON 格式(推荐) |
--csv |
CSV 格式 |
--output FILE |
保存文件(.csv/.json/.xlsx/.md) |
--limit N |
限制行数 |
--sort desc|asc |
排序:desc 最新在前(默认),asc 最旧在前 |
--no-cache |
跳过缓存 |
获取最新数据的关键: 很多历史数据接口默认返回从最早开始的数据。如果你只取 --limit 10 而不加 --sort desc,拿到的是最旧的 10 条而不是最新的。查最新数据时务必加 --sort desc:
akshare-cli call stock_zh_a_hist --symbol 000001 --json --limit 10 --sort desc # 最近 10 天
默认缓存 30 分钟(宏观 24 小时),实时行情不缓存。
注意事项
- 已知损坏接口:调用前先查
references/known-issues.md,命中直接用替代方案 - 盘中 vs 盘后:非交易时段优先用历史接口(
stock_zh_a_hist),更快更稳定 - 日期自动填充:未指定
date参数时 CLI 自动填充当天日期 - 名称查代码:用
stock_info_sh_name_code/stock_info_sz_name_code,禁止用全量 spot 遍历
更多工作流示例见
references/examples.md