一. 认真学完这一章节,你可以做什么?
上一章节,我们获取了股票的分钟数据,这一章节我们来实现一下 获取股票的实时数据 并进行展示。 展示今天的详细信息,包括五档信息。
样式大概如下:
输入股票的任意一个数据,可以获取今天的实时数据, 并且支持自动刷新,包括五档数据。
本文含系统自动匹配的广告,广告收入用于支持持续创作,感谢理解
二. 数据源和响应信息
股票的实时数据,从腾讯证券平台获取,暂不采用 金亥跃江的股票平台数据。
请求样式为:
http://qt.gtimg.cn/?q=sz002812
其中,后面跟的数字是 股票的全名称。
响应数据类似是:
v_sz002812="51~恩捷股份~002812~61.76~67.72~68.00~306081~132087~173994~61.74~9~61.72~12~61.71~3~61.70~220~61.69~20~61.76~18~61.78~46~61.80~50~61.81~1~61.83~8~~20260708120115~-5.96~-8.80~68.30~61.27~61.76/306081/1954571836~306081~195457~3.72~160.95~~68.30~61.27~10.38~508.07~606.56~2.37~74.49~60.95~1.96~141~63.86~58.25~425.51~~~1.38~195457.1836~0.0000~0~ A~GP-A~9.04~-5.62~0.00~1.47~0.87~87.71~27.82~-11.06~-1.87~-6.17~822657068~982131897~36.43~37.89~822657068~~~110.50~-0.32~~CNY~0~~61.65~55~";
关于数据的解析,可以看我之前的文档。
Java量化系列(二):实现股票日K数据每日自动同步
三. Python 实现获取股票的实时数据
为了方便大家理解和使用, 小亥将采用 streamlit 进行编写相关的脚本, 这样有页面,也方便点击 。
大家可以通过 AI 自行实现, 小亥这儿提供一个简单的版本。
脚本名称为 stock_now.py
安装依赖:
pip install streamlit requests pandas plotly -i https://pypi.tuna.tsinghua.edu.cn/simple
主要的代码是:
def fetch_stock_data(code: str) -> dict | None: """ 调用腾讯实时行情接口获取股票数据。 Args: code: 股票代码(如 002812、sh600519、sz300750) Returns: dict: 解析后的股票数据,失败返回 None """ market, raw_code = detect_market(code) query = f"{market}{raw_code}" try: resp = requests.get(f"{API_BASE}?q={query}", timeout=TIMEOUT) resp.raise_for_status() text = resp.content.decode("gbk") # 提取 data 部分 match = re.search(r'=\"(.+)\"', text) if not match: return None fields = match.group(1).split("~") if len(fields) < 50: return None # ---- 解析核心字段 ---- def safe_float(s): try: return float(s) except (ValueError, TypeError): return None def safe_int(s): try: return int(float(s)) except (ValueError, TypeError): return None price = safe_float(fields[3]) pre_close = safe_float(fields[4]) change = safe_float(fields[31]) if price is not None else None pct = safe_float(fields[32]) data = { "name": fields[1], "code": fields[2], "price": price, "pre_close": pre_close, "open": safe_float(fields[5]), "volume": safe_int(fields[6]), "outer_disc": safe_int(fields[7]), # 外盘 "inner_disc": safe_int(fields[8]), # 内盘 # 五档买卖 "buy_prices": [safe_float(fields[i]) for i in [9, 11, 13, 15, 17]], "buy_volumes": [safe_int(fields[i]) for i in [10, 12, 14, 16, 18]], "sell_prices": [safe_float(fields[i]) for i in [19, 21, 23, 25, 27]], "sell_volumes":[safe_int(fields[i]) for i in [20, 22, 24, 26, 28]], "datetime": fields[30], "change": change, "pct": pct, "high": safe_float(fields[33]), "low": safe_float(fields[34]), "turnover": safe_float(fields[38]), "pe_dynamic": safe_float(fields[39]), "pe_static": safe_float(fields[52]), "pb": safe_float(fields[46]), "cap_flow": safe_float(fields[44]), # 流通市值(亿) "cap_total": safe_float(fields[45]), # 总市值(亿) "amplitude": safe_float(fields[43]), "vol_ratio": safe_float(fields[49]), "up_limit": safe_float(fields[47]), "down_limit": safe_float(fields[48]), "avg_price": safe_float(fields[51]), "div_yield": safe_float(fields[56]) if fields[56] else None, "amount": safe_float(fields[37]) if fields[37] else None, # 成交额(万) "raw_fields": fields, } return data except Exception as e: st.error(f"获取数据失败: {e}") return None
点击 本次头条, 查看评论区 获取相应的完整的代码(完全能运行的)。
Google 浏览器会自动打开
免责声明:本文仅供技术交流,不构成任何投资建议。股市有风险,投资需谨慎。
如果你觉得这篇文章说到了心坎里,请点个“在看” 和推荐 ,点个关注,并转发给身边的朋友,让更多人支持小亥!
#Python量化 #股票量化 #股票实时数据 #金亥跃江聊量化 #金亥跃江