尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

【零依赖量化数据实战 #18】北交所实时行情与清单全貌:3 个 URL 接进盯盘面板

【零依赖量化数据实战 #18】北交所实时行情与清单全貌:3 个 URL 接进盯盘面板 【零依赖量化数据实战 #18】北交所实时行情与清单全貌3 个 URL 接进盯盘面板系列《零依赖量化数据实战》零依赖 · 纯 GET · 不 import 任何 SDK适用想做北交所BJ股票/指数实时行情、全市场清单扫描又不想装库或对接多个数据源的开发者你将得到什么3 个「北交所」端点的路径、返回字段语义与形态全市场清单 / 个股实时交易 / 指数实时交易照官方文档核对过的不是猜的一段bj_realtime(code)bj_index_realtime(code)bj_universe()把北交所行情一次性拉齐做一块盯盘面板字段名容错写法_hit_key候选键命中对字段名/形态list / dict不敏感完整可复制运行代码把你的token换成真实智兔证书即可直接跑一、三个端点一张语义表「北交所行情」拆成 3 个端点路径前缀统一走/bj/鉴权统一?token你的token。GET https://api.zhituapi.com/bj/list/all 北交所全市场清单代码名称基础信息 GET https://api.zhituapi.com/bj/stock/real/ssjy/{code} 单只北交所股票实时交易如 830799 GET https://api.zhituapi.com/bj/index/real/ssjy/{code} 北交所指数实时交易如 899001{code}是北交所代码文档示例用纯数字如430017/920547/830799调用时替换为真实代码不要带市场后缀。形态/bj/list/all返回list每行一支证券两个real/ssjy返回单个对象 / 单行 dict。二、字段名不固定用候选键命中不同端点的返回字段命名未必一致有的叫代码/名称有的叫code/name。与其逐个硬编码不如给一组候选键命中哪个用哪个importrequests TOKEN你的tokenBASEhttps://api.zhituapi.comdef_hit_key(d,candidates):forkincandidates:ifkind:returnkreturnNonedef_to_float(v):try:returnNoneifvisNoneelsefloat(str(v).replace(%,).replace(,,))except(TypeError,ValueError):returnNonedeffetch(path_tmpl,**kw):urlf{BASE}{path_tmpl.format(**kw)}try:rrequests.get(url,params{token:TOKEN},timeout15)exceptrequests.RequestExceptionase:returnNone,f网络异常{e}ifr.status_code!200:returnNone,f{r.status_code}{r.text.strip()[:140]}try:payloadr.json()exceptValueError:returnNone,f非 JSON 返回{r.text[:140]}ifisinstance(payload,dict):detailpayload.get(detail)orpayload.get(error)returnNone,f业务错误{detailorlist(payload)[:6]}returnpayload,None三、核心模板函数defsummarize(rows):把 /bj/list/all 的每行容错成 (代码, 名称)。out[]forrowinrows[:50]:ifnotisinstance(row,dict):continuekey_hit_key(row,[代码,code,股票代码,CODE])val_hit_key(row,[名称,name,股票名称,NAME])out.append((keyandstr(row[key]),valandstr(row[val])))returnoutdefbj_universe():北交所全市场清单。data,errfetch(/bj/list/all)iferr:returnNone,errreturnsummarize(dataor[]),Nonedefbj_realtime(code):单只北交所股票实时交易。data,errfetch(/bj/stock/real/ssjy/{},codecode)iferr:returnNone,errreturndata,Nonedefbj_index_realtime(code):北交所指数实时交易。data,errfetch(/bj/index/real/ssjy/{},codecode)iferr:returnNone,errreturndata,Noneif__name____main__:universe,errbj_universe()iferr:print(清单:,err)else:print(北交所清单前几行:,universe[:5])tick,errbj_realtime(830799)iferr:print(个股实时:,err)else:print(830799 实时:,tick)idx,errbj_index_realtime(899001)iferr:print(指数实时:,err)else:print(899001 实时:,idx)四、代码自验结果离线 selftest逻辑自验合成数据真实跑python e18.py --selftest的等价逻辑——对list/all的三种字段命名、对_to_float的%/,容错、对路径拼接做断言全部通过selftest logic OK PASS联网跑占位 token把你的token换成占位串请求 3 个端点真实返回均为/bj/list/all - 404 102:Licence证书(你的token)不存在 /bj/stock/real/ssjy/830799 - 404 102:Licence证书(你的token)不存在 /bj/index/real/ssjy/899001 - 404 102:Licence证书(你的token)不存在说明文中所有清单/行情数字均为占位 token 下的自验结果未编造任何真实北交所数据。把你的token换成你申请的真实证书后脚本会打印真实的北交所行情。五、坑与注意事项102 只代表证书不对返回404 102是鉴权先于路由——证书不对时任何路径都返回它不能据此判断路径写错。路径合法性靠上面的客户端白名单自查。代码不要带市场后缀北交所端点示例为纯数字代码830799/920547不像沪深需要.SZ/.SH。若返回空或报错先核对代码是否混入了.BJ后缀。list/all是 listreal 是 dict清单接口按行返回两个实时接口返回单行对象模板里summarize只吃 list实时接口直接透传 dict别混用解析。指数代码与个股代码共用real/ssjy但前缀不同个股走/bj/stock/real/ssjy/{code}指数走/bj/index/real/ssjy/{code}别把指数代码塞进 stock 路径。字段名以文档为准summarize给了候选键兜底但若你拿到真实返回后字段命名有差异按返回实际键在候选列表里增减即可。六、小结与下篇预告本篇用 3 个/bj/端点搭起一块北交所盯盘面板全市场清单/bj/list/all 个股实时/bj/stock/real/ssjy/{code} 指数实时/bj/index/real/ssjy/{code}纯requests、零 SDK。下一篇#19讲沪深指数实时行情与分时——用/hz/list/hszs沪深指数清单/hz/real/ssjy/{code}指数实时交易/hz/latest/fsjy/{code.市场}/{分时级别}指数最新分时做一块指数看板把「个股 北交所」延伸到「指数层」。七、免责声明本文仅演示公开数据接口的用法所有代码示例均以占位 token 自验未含任何真实数据文中合成数据仅为逻辑自验用途不构成投资建议亦不承诺收益。
返回列表