
【零依赖量化数据实战 #07】沪深龙虎榜接口5 个 URL 接进异动事件驱动系列《零依赖量化数据实战》零依赖 · 纯 GET · 不 import 任何 SDK适用想做龙虎榜异动监控、机构席位追踪、营业部上榜统计把「上榜」变成能触发动作的事件而不是一堆看不完的标题的开发者你将得到什么5 个龙虎榜端点的路径表每日详情 / 个股上榜 / 营业部上榜 / 机构席位追踪 / 成交明细照公开文档核对过的不是猜的一段daily_dragon()批量拉取 summarize()汇总打印的完整代码字段名容错写法不同数据源字段名不一样用候选键列表命中抽取换数据源不用改代码龙虎榜异动扫描的最小可用模板把 5 个端点包成一个函数每天收盘后跑一次打印异动清单完整可复制运行的代码把你的token换成真实证书即可直接跑一、5 个端点一张语义表A 股「龙虎榜」拆成了 5 个独立端点路径前缀统一/hilh/均见于公开文档对客开放GET https://api.zhituapi.com/hilh/mrxq 每日详情今日龙虎榜概览 GET https://api.zhituapi.com/hilh/ggsb/{n} 个股上榜统计近 n 日n5/10/30/60 GET https://api.zhituapi.com/hilh/yybsb/{n} 营业部上榜统计近 n 日 GET https://api.zhituapi.com/hilh/jgxw/{n} 机构席位追踪近 n 日 GET https://api.zhituapi.com/hilh/xwmx 机构席位成交明细鉴权统一?token你的token。ggsb/yybsb/jgxw三个带窗口参数n公开文档给出的形态是/hilh/ggsb/5n支持5/10/30/60四个窗口——客户端按白名单校验n取值避免拼出服务端不识别的路径。一个实际用法收盘后扫一遍mrxq今日龙虎榜总览ggsb/5近 5 日频繁上榜的票jgxw/5近 5 日机构席位动向基本能覆盖「今天谁在异动、机构在买还是卖」两个问题。二、字段名不固定用候选键命中龙虎榜端点的返回字段名可能因数据源更新而变化。与其硬编码字段名改了就全崩不如用候选键列表命中抽取def_hit_key(d,candidates):从字典中按候选键名列表命中第一个存在的键。forkincandidates:ifkind:returnkreturnNonedefsummarize(name,data):从龙虎榜端点的返回中抽取关键字段做汇总对字段名不敏感。ifdataisNone:returnf{name}: 无数据ifisinstance(data,list):ifnotdata:returnf{name}: 0 条firstdata[0]ifisinstance(data[0],dict)else{}code_key_hit_key(first,[code,dm,stock,gpdm,symbol])name_key_hit_key(first,[name,mc,stock_name,gpmc])price_key_hit_key(first,[price,jb,jq,cjje,amount,je])parts[f{name}:{len(data)}条]ifcode_key:parts.append(f首条代码{first.get(code_key)})ifname_key:parts.append(f名称{first.get(name_key)})ifprice_key:parts.append(f金额键{first.get(price_key)})return | .join(parts)ifisinstance(data,dict):keyslist(data.keys())[:6]returnf{name}: 聚合对象键{keys}returnf{name}:{type(data).__name__}这样就算数据源把dm改成gpdm或symbol代码不用动。命不中也不报错——只是那行汇总少一个字段不影响其他端点。三、批量拉取 龙虎榜异动扫描模板importtimeimportrequests TOKEN你的tokenBASEhttps://api.zhituapi.comHILH_ENDPOINTS{mrxq:每日详情今日龙虎榜概览,ggsb:个股上榜统计,yybsb:营业部上榜统计,jgxw:机构席位追踪,xwmx:机构席位成交明细,}N_VALUES[5,10,30,60]defbuild_path(name,nNone):拼龙虎榜路径带窗口的端点必须校验 n 取值。ifnamein(ggsb,yybsb,jgxw):ifnnotinN_VALUES:returnNone,f非法 n{n}合法值{N_VALUES}returnf/hilh/{name}/{n},Nonereturnf/hilh/{name},Nonedeffetch_hilh(name,nNone,tokenTOKEN,timeout15):拉单个龙虎榜端点返回 (data, err)。path,errbuild_path(name,n)iferr:returnNone,errtry:rrequests.get(f{BASE}{path},params{token:token},timeouttimeout)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,Nonedefdaily_dragon(tokenTOKEN,n5,sleep0.2):龙虎榜异动扫描拉取全部端点并汇总打印。iftoken你的token:print([演示] TOKEN 为占位符请换成真实 token 后再跑。)forname,descinHILH_ENDPOINTS.items():data,errfetch_hilh(name,n,token)iferr:print(f{name}({desc}): 暂不可用{err})else:print(summarize(name,data))time.sleep(sleep)if__name____main__:daily_dragon()_hit_key/summarize见前文拼在一起就是完整脚本。sleep0.2是限频保护——批量拉 5 个端点 0.2 秒间隔 ≈ 1 秒远在限频内。ggsb/yybsb/jgxw用同一个n窗口要换窗口改daily_dragon(n30)即可。四、代码自验结果离线自测 6 项全 PASSselftest PASS: 端点注册完整5/5 / n 取值白名单校验5/10/30/60 合法、其它拒绝 / _hit_key 命中逻辑 / summarize 列表形态抽取 / summarize 聚合对象形态 / 错误码解析结构 共 6 项联网跑占位 token真实输出[演示] TOKEN 为占位符请换成真实 token 后再跑。 mrxq (每日详情今日龙虎榜概览): 暂不可用403 102:Licence证书(你的token)不存在 ggsb (个股上榜统计): 暂不可用403 102:Licence证书(你的token)不存在 ...5 个端点契约一致。本文未编造任何龙虎榜数值——换成覆盖该接口的正式证书后重跑即可打印真实异动清单。五、坑与注意事项坑 #1102 不代表路径写对了。鉴权发生在路由匹配之前。把路径故意写错/hilh/nosuch配无效 token同样返回102。路径合法性只能靠客户端按白名单自查——本文 5 个路径是照公开文档核对的。坑 #2ggsb/yybsb/jgxw的n只有 5/10/30/60。这是窗口参数不是任意整数拼成/hilh/ggsb/7这类服务端不识别客户端build_path已按白名单拦截。别用「近 7 日」这种自由值。坑 #3返回的是「榜单清单」不是「单股快照」。这 5 个端点返回的是上榜标的/席位的清单不是某只股票的明细。做单股监控请用系列前几篇的实时行情等端点本篇负责「龙虎榜异动扫描」。小结与下篇预告这篇你拿到了 5 个沪深龙虎榜端点的完整路径表、字段名容错抽取写法、以及一个异动扫描模板函数。下一篇进入新的数据主题域场内基金 / ETF 数据接口讲基金清单 / 实时净值 / 持仓穿透 / 业绩排名怎么用一个 URL 直接取到接进基金筛选与盯盘。免责声明本文仅演示公开数据接口的用法所有代码示例均以占位 token 自验未含任何真实行情数据文中数据仅为接口用法演示不构成投资建议亦不承诺收益。投资决策请基于你自己的判断与风险承受力。