akshare / Architecture

akshare 工作原理:公开数据源到 DataFrame 的取数链路

akshare 不是自建数据库,而是把公开财经网站的数据「采集、解析、整理」后通过统一 Python 接口暴露,最终以 pandas DataFrame 返回。理解这条链路,有助于判断它的能力边界与稳定性。

本质:公开数据源采集输出:DataFrame非官方架构图
公开财经数据源东方财富等公开网站
采集 / 解析层请求并解析页面或接口
接口层ak.stock_zh_a_hist 等
pandas DataFrame直接用于分析
akshare 分层工作原理示意图(基于公开信息整理,非官方架构图)。
Layers

分层理解

把 akshare 想成「数据采集与整理层」,而不是数据存储或交易系统。

数据源层

公开财经网站(如东方财富等)。akshare 不拥有数据,数据可用性受上游影响。

采集解析层

请求公开页面/接口并解析成结构化数据,封装了反爬与字段清洗细节。

接口输出层

对外暴露 ak.xxx(),返回 pandas DataFrame,供分析、回测直接使用。

Naming

接口命名约定

akshare 接口名通常包含市场、类别与数据源标识,读懂命名能更快定位接口。

前缀/后缀含义示例
stock / fund / futures / bond / macro / crypto数据类别stock_zh_a_spot_em
_zh_a / _zh_hk / _us市场区域(A股/港股/美股)stock_zh_a_hist
_em / _sina / _tx数据源标识(东方财富/新浪/腾讯等)stock_zh_a_spot_em
spot / hist / daily数据粒度(实时/历史/日频)stock_zh_a_hist
说明:接口名会随版本调整(1.18+ 更名较多),使用前以当前版本官方文档为准。
Boundary

能力边界

明确 akshare 是什么、不是什么,避免误用。

它做

  • 获取公开财经数据
  • 返回 DataFrame
  • 覆盖多类市场数据

它不做

  • 不执行交易
  • 不保证数据实时准确
  • 不提供投资建议
FAQ

常见问题

akshare 有自己的数据库吗?

没有。它实时从公开财经网站采集并整理数据,不存储历史数据库;数据可用性依赖上游。

为什么有时接口返回失败?

上游页面/接口变动、限流或网络问题都可能导致失败;这是「公开数据采集」路线的固有风险。

接口名里的 _em 是什么意思?

通常指数据来自东方财富(East Money)相关公开接口;不同后缀对应不同数据源。

akshare 是官方架构吗?

本站示意图为基于公开信息的整理(schematic),非 akshare 官方架构图。

不想了解原理,只想取数怎么办?

可看 EasyClaw 的 akshare-finance 技能,一句话发起取数任务,免自行写代码与维护。

理解原理后,看市场覆盖

akshare 能取哪些市场的数据、边界在哪,见市场页;或直接对比 EasyClaw 路线。