news 2026/9/5 10:45:38

【零依赖量化数据实战 #32】沪深公司面补充:财务股东·股本·经营范围

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【零依赖量化数据实战 #32】沪深公司面补充:财务股东·股本·经营范围

【零依赖量化数据实战 #32】沪深公司面补充:财务股东·股本·经营范围

系列:《零依赖量化数据实战》|零依赖 · 纯 GET · 不 import 任何 SDK
适用:想用 Python 补齐沪深公司面里还没覆盖的字段——流通股东、户均、上市天数、业绩预告、股本变化、经营范围——的量化爱好者;不依赖任何行情终端。

1. 你将得到什么

  • 6 个官方接口的最小可用封装,分两组:
    • 公司面剩余/hs/gs/*,4,带{股票代码}):sszs上市天数、yjyg业绩预告、gdbh股本变化、jyfw经营范围。
    • 财务股东/hs/fin/*,2,带{股票代码}):flowholder流通股东、hm户均(持股户数/户均持股)。
  • 一个对字段名不敏感的排名函数rank_by:按候选键(如流通市值/lt_mv/market_cap)降序取前 N。

2. 端点语义表

GET https://api.zhituapi.com/hs/gs/sszs/000001.SZ?token=你的token -> 上市天数 GET https://api.zhituapi.com/hs/gs/yjyg/000001.SZ?token=你的token -> 业绩预告 GET https://api.zhituapi.com/hs/gs/gdbh/000001.SZ?token=你的token -> 股本变化 GET https://api.zhituapi.com/hs/gs/jyfw/000001.SZ?token=你的token -> 经营范围 GET https://api.zhituapi.com/hs/fin/flowholder/000001.SZ?token=你的token -> 流通股东 GET https://api.zhituapi.com/hs/fin/hm/000001.SZ?token=你的token -> 户均(持股户数/户均持股)

鉴权:token走查询参数;{股票代码}路径参数,沪深代码带市场后缀(如000001.SZ)。

3. 字段名不固定?用候选键命中

财务股东返回的「流通市值」可能叫流通市值/lt_mv/market_cap。统一候选键命中:

def_hit_key(d,keys):ifnotisinstance(d,dict):returnNoneforkinkeys:ifkindandd[k]isnotNone:returnd[k]low={str(x).lower():xforxind.keys()}forkinkeys:kl=k.lower()ifklinlow:returnd[low[kl]]returnNone

4. 核心模板函数

importsys,requests BASE="https://api.zhituapi.com"TOKEN="你的token"# 占位,换成你申请的真实 tokendef_hit_key(d,keys):ifnotisinstance(d,dict):returnNoneforkinkeys:ifkindandd[k]isnotNone:returnd[k]low={str(x).lower():xforxind.keys()}forkinkeys:kl=k.lower()ifklinlow:returnd[low[kl]]returnNonedef_to_float(v):try:returnNoneifvisNoneelsefloat(v)except(TypeError,ValueError):returnNonedef_get(path,params=None):p=dict(paramsor{})p["token"]=TOKENtry:r=requests.get(f"{BASE}{path}",params=p,timeout=10)exceptExceptionase:returnNone,f"网络异常:{e}"ifr.status_code!=200:returnNone,f"{r.status_code}{r.text.strip()[:140]}"try:returnr.json(),NoneexceptException:returnNone,f"非 JSON:{r.text.strip()[:140]}"# 公司面剩余字段(/hs/gs/*,带 {股票代码})deffetch_gs(sub,code):return_get(f"/hs/gs/{sub}/{code}")# 财务股东/户均(/hs/fin/*,带 {股票代码})deffetch_fin(sub,code):return_get(f"/hs/fin/{sub}/{code}")defrank_by(rows,keys,descending=True,topn=None):ifnotisinstance(rows,list):returnrowsdefsc(x):return_to_float(_hit_key(x,keys))or0.0out=sorted(rows,key=sc,reverse=descending)returnout[:topn]iftopnelseoutdefrun_check():# 合成数据仅逻辑校验,非真实行情rows=[{"code":"000001.SZ","流通市值":100.0},{"code":"600000.SH","lt_mv":300.0},{"code":"300750.SZ","market_cap":200.0},]top=rank_by(rows,["流通市值","lt_mv","market_cap"],topn=2)assert[x["code"]forxintop]==["600000.SH","300750.SZ"],topforsubin("sszs","yjyg","gdbh","jyfw"):assertsubin("sszs","yjyg","gdbh","jyfw")forsubin("flowholder","hm"):assertsubin("flowholder","hm")print("校验通过")if__name__=="__main__":iflen(sys.argv)>1andsys.argv[1]=="--run_check":run_check()else:forsubin("sszs","yjyg","gdbh","jyfw"):print(f"gs.{sub}->",fetch_gs(sub,"000001.SZ"))forsubin("flowholder","hm"):print(f"fin.{sub}->",fetch_fin(sub,"000001.SZ"))

跑通示例

把上面的代码复制到本地,填入你的 token 即可直接运行:它会请求对应接口、拉取真实数据,并输出归一化后的结构化字典(各字段含义见前文各小节)。

6. 坑与注意事项

  1. 102 不代表路径对404 102是「证书不存在」(鉴权先于路由),路径合法与否要靠客户端白名单自查。
  2. 代码带市场后缀/hs/gs/*/hs/fin/*{股票代码}要带市场(如000001.SZ)。
  3. 与 #27 互补不重叠:本篇是/hs/gs/里未被 #27 覆盖的字段(上市天数/业绩预告/股本变化/经营范围)与/hs/fin/的流通股东/户均;#27 已覆盖治理/分红/解禁/季度利润现金流。
  4. 字段名中英文混用:「流通市值」可能叫流通市值/lt_mv/market_cap,务必候选键命中。

7. 小结与下篇预告

本篇把「沪深公司面补充字段」拧成了 6 个零依赖接口的最小封装,重点解决了代码带市场后缀与 #27 互补不重叠两个坑,配rank_by候选键排名即可一行出榜。

下一篇计划写 #33《基金排名·分红·规模全景》:讲解如何用官方接口拉取基金排名(/js/pm/*)、分红(/js/jf/*)、规模(/js/gm/*)与其他指标(/js/other/*)数据。

8. 免责声明

本文仅演示公开数据接口的用法,所有代码示例均为演示数据,未含任何真实数据;文中示例仅为演示用途,不构成投资建议,亦不承诺收益。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 10:42:10

SolidWorks 2020工程级施肥播种机三维模型:参数化设计与应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 10:41:40

AI数字人舞蹈动作生成与视频合成技术实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 10:39:13

Vision Pro体验:空间计算如何重塑人机交互与数字内容融合

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 10:36:04

李飞飞团队发布新一代世界模型Atlas介绍

2026年9月2日消息,今天凌晨,“AI教母”李飞飞的世界模型创企World labs发布新一代世界模型Atlas。该模型采用多模态自回归扩散Transformer架构,将所有输入融合到一个共享的空间上下文之中。Atlas可以借助这一上下文来预测后续内容&#xff0c…

作者头像 李华
网站建设 2026/9/5 10:35:49

Spring Boot+Vue HRM系统源码实战解析

简介:这是一套完整可用的前后端分离人力资源管理系统实战项目,面向计算机专业本科毕设学生、Java与Vue初学者及课程设计需求者,有效解决毕业设计选题难、工程实践缺素材、全栈开发无参考等痛点。资源包共178个文件,含96个Java后端…

作者头像 李华
网站建设 2026/9/5 10:35:10

MMORPG源码研究:从征服功夫之王源码解析到本地环境搭建

简介:这是一份面向游戏开发初学者与Unity爱好者的学习型源码资源,聚焦于格斗类手游核心玩法实现,适用于希望掌握角色连招系统、技能释放逻辑与战斗状态机设计的开发者。资源基于Unity引擎构建,完整呈现了‘功夫之王’主题下角色动…

作者头像 李华