據(jù)實戰(zhàn) #07】滬深龍虎榜接口:5 個 URL 接進異動事件驅(qū)動)
【零依賴量化數(shù)據(jù)實戰(zhàn) #07】滬深龍虎榜接口5 個 URL 接進異動事件驅(qū)動系列《零依賴量化數(shù)據(jù)實戰(zhàn)》零依賴 · 純 GET · 不 import 任何 SDK適用想做龍虎榜異動監(jiān)控、機構(gòu)席位追蹤、營業(yè)部上榜統(tǒng)計把「上榜」變成能觸發(fā)動作的事件而不是一堆看不完的標題的開發(fā)者你將得到什么5 個龍虎榜端點的路徑表每日詳情 / 個股上榜 / 營業(yè)部上榜 / 機構(gòu)席位追蹤 / 成交明細照公開文檔核對過的不是猜的一段daily_dragon()批量拉取 summarize()匯總打印的完整代碼字段名容錯寫法不同數(shù)據(jù)源字段名不一樣用候選鍵列表命中抽取換數(shù)據(jù)源不用改代碼龍虎榜異動掃描的最小可用模板把 5 個端點包成一個函數(shù)每天收盤后跑一次打印異動清單完整可復制運行的代碼把你的token換成真實證書即可直接跑一、5 個端點一張語義表A 股「龍虎榜」拆成了 5 個獨立端點路徑前綴統(tǒng)一/hilh/均見于公開文檔對客開放GET https://api.zhituapi.com/hilh/mrxq 每日詳情今日龍虎榜概覽 GET https://api.zhituapi.com/hilh/ggsb/{n} 個股上榜統(tǒng)計近 n 日n5/10/30/60 GET https://api.zhituapi.com/hilh/yybsb/{n} 營業(yè)部上榜統(tǒng)計近 n 日 GET https://api.zhituapi.com/hilh/jgxw/{n} 機構(gòu)席位追蹤近 n 日 GET https://api.zhituapi.com/hilh/xwmx 機構(gòu)席位成交明細鑒權(quán)統(tǒng)一?token你的token。ggsb/yybsb/jgxw三個帶窗口參數(shù)n公開文檔給出的形態(tài)是/hilh/ggsb/5n支持5/10/30/60四個窗口——客戶端按白名單校驗n取值避免拼出服務(wù)端不識別的路徑。一個實際用法收盤后掃一遍mrxq今日龍虎榜總覽ggsb/5近 5 日頻繁上榜的票jgxw/5近 5 日機構(gòu)席位動向基本能覆蓋「今天誰在異動、機構(gòu)在買還是賣」兩個問題。二、字段名不固定用候選鍵命中龍虎榜端點的返回字段名可能因數(shù)據(jù)源更新而變化。與其硬編碼字段名改了就全崩不如用候選鍵列表命中抽取def_hit_key(d,candidates):從字典中按候選鍵名列表命中第一個存在的鍵。forkincandidates:ifkind:returnkreturnNonedefsummarize(name,data):從龍虎榜端點的返回中抽取關(guān)鍵字段做匯總對字段名不敏感。ifdataisNone:returnf{name}: 無數(shù)據(jù)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__}這樣就算數(shù)據(jù)源把dm改成gpdm或symbol代碼不用動。命不中也不報錯——只是那行匯總少一個字段不影響其他端點。三、批量拉取 龍虎榜異動掃描模板importtimeimportrequests TOKEN你的tokenBASEhttps://api.zhituapi.comHILH_ENDPOINTS{mrxq:每日詳情今日龍虎榜概覽,ggsb:個股上榜統(tǒng)計,yybsb:營業(yè)部上榜統(tǒng)計,jgxw:機構(gòu)席位追蹤,xwmx:機構(gòu)席位成交明細,}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網(wǎng)絡(luò)異常{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業(yè)務(wù)錯誤{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 秒遠在限頻內(nèi)。ggsb/yybsb/jgxw用同一個n窗口要換窗口改daily_dragon(n30)即可。四、代碼自驗結(jié)果離線自測 6 項全 PASSselftest PASS: 端點注冊完整5/5 / n 取值白名單校驗5/10/30/60 合法、其它拒絕 / _hit_key 命中邏輯 / summarize 列表形態(tài)抽取 / summarize 聚合對象形態(tài) / 錯誤碼解析結(jié)構(gòu) 共 6 項聯(lián)網(wǎng)跑占位 token真實輸出[演示] TOKEN 為占位符請換成真實 token 后再跑。 mrxq (每日詳情今日龍虎榜概覽): 暫不可用403 102:Licence證書(你的token)不存在 ggsb (個股上榜統(tǒng)計): 暫不可用403 102:Licence證書(你的token)不存在 ...5 個端點契約一致。本文未編造任何龍虎榜數(shù)值——換成覆蓋該接口的正式證書后重跑即可打印真實異動清單。五、坑與注意事項坑 #1102 不代表路徑寫對了。鑒權(quán)發(fā)生在路由匹配之前。把路徑故意寫錯/hilh/nosuch配無效 token同樣返回102。路徑合法性只能靠客戶端按白名單自查——本文 5 個路徑是照公開文檔核對的???#2ggsb/yybsb/jgxw的n只有 5/10/30/60。這是窗口參數(shù)不是任意整數(shù)拼成/hilh/ggsb/7這類服務(wù)端不識別客戶端build_path已按白名單攔截。別用「近 7 日」這種自由值???#3返回的是「榜單清單」不是「單股快照」。這 5 個端點返回的是上榜標的/席位的清單不是某只股票的明細。做單股監(jiān)控請用系列前幾篇的實時行情等端點本篇負責「龍虎榜異動掃描」。小結(jié)與下篇預(yù)告這篇你拿到了 5 個滬深龍虎榜端點的完整路徑表、字段名容錯抽取寫法、以及一個異動掃描模板函數(shù)。下一篇進入新的數(shù)據(jù)主題域場內(nèi)基金 / ETF 數(shù)據(jù)接口講基金清單 / 實時凈值 / 持倉穿透 / 業(yè)績排名怎么用一個 URL 直接取到接進基金篩選與盯盤。免責聲明本文僅演示公開數(shù)據(jù)接口的用法所有代碼示例均以占位 token 自驗未含任何真實行情數(shù)據(jù)文中數(shù)據(jù)僅為接口用法演示不構(gòu)成投資建議亦不承諾收益。投資決策請基于你自己的判斷與風險承受力。