教程

用 Python 获取 A 股实时行情:3 种方法对比

三种做法:直接调 HTTP API、装现成数据 SDK、自己爬网页。推荐第一种 —— 不用注册、代码最短、拿到的是实时价;下面给出三种方法的可运行代码与取舍,并写明各自「什么时候别用」。

方法一:直接调 HTTP API(推荐)

免费端点无需 Key,一个 GET 请求就能拿到现价、开高低、成交量、成交额与换手率。返回是统一信封 `{ ok, endpoint, tier, elapsed_ms, source, data }`,`data` 是按日期倒序的数组,`data[0]` 就是最新一根(当日实时)行情。

代码只有几行(免费端点不需要任何鉴权头):

Python(可直接运行)
import requests

r = requests.get(
    "https://api.ashareapi.com/v1/quote",
    params={"code": "sh600667"},   # 市场前缀:sh 沪 / sz 深 / bj 北 / hk 港 / us 美
    timeout=10,
)
body = r.json()
if not body.get("ok"):
    raise RuntimeError(body)       # 上游失败会返回 ok=false,且不扣调用次数

bar = body["data"][0]              # 最新一根(当日)
print(bar["date"], bar["last"], bar["turnover"])
  • `last` = 最新价 · `open/high/low` = 开高低 · `turnover` = 换手率(%)
  • `volume` 单位是手(×100 = 股)· `amount` 单位是元
  • `date` 是数据日期 —— 休市日不会变成"今天",别把上一交易日的价当实时价

方法二:用现成的数据 SDK(Tushare / AkShare 这类)

如果你已经在用某个 SDK,不必急着换 —— 它的优势是函数多、字段全(分钟线、财报、新闻都在里面)。代价是另外两件事:

Tushare 需要注册拿 token + 管理积分,实时行情是单独收费的权限;AkShare 免 token,但它是抓公开网页的开源库,上游改版时接口会断,需要自己升级维护(这是它 issue 区的主要内容)。

对比:AkShare 的写法(示意)
# pip install akshare
import akshare as ak

df = ak.stock_zh_a_spot_em()        # 全市场快照,自己筛代码
row = df[df["代码"] == "600667"]
print(row)
  • 什么时候别用 SDK:只要主流数据(行情/K线/资金/龙虎榜)且不想维护数据管道时 —— 直接调 API 更省事
  • 什么时候必须用 SDK:需要分钟级数据或新闻/公告/研报全文 —— 我们不提供这些(边界写在下面 FAQ)

方法三:自己爬行情网页(不推荐,除非没有 API)

爬网页在"有 API 的时候"是三重亏:页面结构随时变(今天能跑明天断)、反爬会拦(限流/验证码/封 IP)、以及数据用途的合规判断落回你自己头上。

只有一种情况值得:你要的数据确实没有任何 API(冷门品种、历史快照之类)。即便如此也建议先找官方数据服务,别从页面开始。

三种方法怎么选

上手成本
最低:一个 GET 请求
要装库 / 注册拿 token
最高:解析页面 + 反爬对抗
实时行情
有(含在免费端点里)
Tushare 需单独权限;AkShare 可拿
能,但要自己维护
稳定性
多源自动切换 + 缓存
上游改版需自己升级
页面一改就断
要不要注册
不要(免费端点)
Tushare 要;AkShare 不要
不要
分钟级数据
❌ 不提供
✅ 有
看页面
适合场景
行情 / K线 / 资金 / 龙虎榜 / 板块 / 财务
分钟级、财报明细、新闻研报
有特殊数据且无 API

常见错误与处理

  • `429` = 超频:匿名 5 次/分;解一次 PoW 挑战(`GET /v1/challenge`)可提到 60 次/分;付费 Key 按档位(体验版 1 万次起)
  • `401` = 调了付费端点但没带 Key(行情快照/K线/热搜/市场总览/涨跌分布 这 5 个不用 Key)
  • 代码必须带市场前缀:`sh600667` / `sz000001` / `bj830799` / `hk00700` / `usAAPL`;只给 6 位数字会取不到
  • `ok:false` = 上游取数失败:已自动换源,且不扣调用次数,重试一次通常就好
  • 休市日与盘中:`date` 字段会告诉你数据是哪一天的(判断逻辑别依赖"今天")

常见问题

不注册真的能调吗?会被封 IP 吗?

能。行情快照 / K线 / 热搜 / 市场总览 / 涨跌分布 这 5 个数据端点无需 Key:匿名 5 次/分,解一次 PoW 挑战后 60 次/分。正常用途不会被封;短时间大量请求会被限流(HTTP 429),这不是封禁,降频或解挑战即可。

免费额度够做什么?

看盘的脚本、小看板、收盘后跑一遍自选股都够(匿名 5 次/分、解挑战 60 次/分)。要跑全市场扫描或高频轮询,买断档更合适:体验版 ¥9.9 / 1 万次,标准版 ¥29.9 / 10 万次,专业版 ¥99 / 50 万次,不限量 ¥199/月。

数据准不准?和我行情软件对不上?

数据来自多个公开数据通道,同一字段会交叉校验并自动切换。对不上时常见两种原因:① 复权口径 —— 我们返回的是前复权价(除权除息日不跳空),若对方用不复权,差异会精确出现在跨除息日的窗口上;② 时间点不同(盘中快照 vs 收盘价)。用 amount / volume 交叉验证最可靠。

能拿分钟级行情吗?

不提供。我们做的是日/周/月 K 线与实时快照,没有分钟线(历史分钟与实时分钟都没有)。需要分钟级请用专门的 SDK 或数据商 —— 这是我们的边界,明写在这里免得你白试。

能拿港股、美股吗?

可以。`code` 带前缀即可:`hk00700`(港股)、`usAAPL`(美股);行情快照与 K 线都支持。可转债用 `sh113052` / `sz123138` 这种形式。

最后更新: 2026-09-21

代码与字段取自线上真实返回(2026-09-21 实测)。限流与错误码见「错误码」页;额度与价格见「定价」页。第三方 SDK 的描述基于其官方文档,以其官方为准。