Python调用东方财富接口获取股票K线数据方法

闻溪
闻溪
发布时间:2026-10-12 | 2人浏览过
原创

通过逆向分析东方财富行情页面的内部接口,本文介绍如何使用 Python 的 requests 库直接获取股票日线、周线等 K 线数据。文章详细拆解了 secid、klt、fqt 等核心参数的构造方法,并提供完整的请求与 JSON 解析代码,帮助开发者高效获取结构化金融时间序列数据。

原理与抓包分析

网页端通常使用 SVG 或 Canvas 绘制 K 线图形,难以直接提取数值。通过浏览器开发者工具监听 Network 面板,可观察到切换不同周期时前端会向后台发起异步数据请求。该接口直接返回 JSON 格式的历史行情,大幅降低了解析成本。

页面K线可视化与后端接口数据流向对比
前端图形渲染与底层数据接口的差异示意

以海尔智家(sh600690)为例,核心请求链路如下:

浏览器开发者工具中查看到的K线数据请求
切换周期时触发的后台数据请求特征

第1步:确认接口地址与市场前缀

基础请求域名固定,所有变量均通过 Query String 传递:

http://54.push2his.eastmoney.com/api/qt/stock/kline/get

注意股票代码需拼接市场标识:上海市场前缀为 1,深圳市场为 0。

第2步:构建核心请求参数

完整参数决定了数据的周期、复权方式、时间跨度及返回字段映射。主要参数规范如下:

  • secid: 组合代码,如 1.600690
  • klt: 周期编码,101日线,102周线,103月线
  • fqt: 复权状态,0不复权,1前复权,2后复权
  • beg/end: 起止日期 yyyymmdd,end 默认为极远未来
  • lmt: 单次请求最大返回条数
  • fields1/fields2: 控制 JSON 响应的列映射表
浏览器控制台查看接口携带的完整Query参数
实际抓取的接口参数结构及字段含义

第3步:编写 Python 请求脚本

使用 requests 模块拼装 URL。为避免触发基础反爬,建议补充 User-Agent 与 Referer 头部:

Python脚本中拼接请求参数的代码片段
参数组装与 Headers 配置部分
import requests

url = "http://54.push2his.eastmoney.com/api/qt/stock/kline/get"
params = {
    "secid": "1.600690",
    "ut": "fa5fd1943c7b386f172d6893dbfba10b",
    "fields1": "f1,f2,f3,f4,f5,f6",
    "fields2": "f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61",
    "klt": "102",      
    "fqt": "1",        
    "beg": "0",
    "end": "20500101",
    "smplmt": "460",
    "lmt": "1000000"
}
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    "Referer": "https://quote.eastmoney.com/"
}

res = requests.get(url, params=params, headers=headers)
data = res.json()
print(data)
Python代码执行后的终端输出截图
代码运行结果及原始 JSON 结构预览

第4步:提取并验证数据结构

返回的 JSON 中,K 线明细位于 data["data"]["klines"](具体键名视版本可能微调)。每条记录按时间顺序排列,包含日期、开高低收、成交额与涨跌幅。控制台最终输出已验证数据完整性:

终端打印的最终K线数据表格输出
解析后输出的结构化 K 线数据示例

拿到数据后,可直接使用 pandas.read_csv() 或字典推导式清洗为 DataFrame,无缝对接 QuantLib 或 Backtrader 等回测引擎。

注意事项与排错

  1. 频率限制:未添加合理请求间隔或共用单一 IP 会导致 403 拒绝。生产环境建议加入随机延时或走代理池。
  2. 字段映射变动:fields1/f2 对应的业务含义可能随接口迭代调整。若取出的涨跌幅或价格异常,请以最新抓包报文为准重新映射。
  3. 类型转换:接口返回的数值多为字符串类型,计算前需使用 float() 强转,避免隐式类型错误。
  4. 合规使用:该通道面向 C 端用户展示,严禁用于高频交易指令触发或商业数据转售。机构级应用请采购持牌交易所授权源。

总结

通过直接调用行情内部接口,可绕过前端图表渲染层,稳定获取包含 OHLCV 要素的标准时间序列数据。掌握参数拼装逻辑与响应解析流程后,能够显著缩短数据采集链路,为量化策略研发提供可靠的基础层支撑。以上就是Python调用东方财富接口获取股票K线数据的详细内容,更多关于Python量化数据获取的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表