HKJC數據獲取及GraphQL API實戰教學
- 3分钟前
- 讀畢需時 3 分鐘
前言:應對2025年後的技術更新
香港賽馬會(HKJC)提供的賽馬與足球數據,是數據分析領域的重要資訊來源。隨著網站技術的演進,數據的獲取方式也發生了顯著變化。傳統的網頁爬蟲方法(如直接解析HTML)在2025年後可能不再適用,因為HKJC的網站架構已轉向使用GraphQL API來動態加載數據 。
本篇教學旨在提供一份基於2026年技術現狀的實用指南,專注於當前穩定且高效的官方數據獲取途徑直接與GraphQL API進行交互。本文將提供相關的技術說明、圖片示例和代碼,介紹從分析請求到處理數據的完整操作步驟,以協助數據分析師和開發者掌握此項技術。
為何選擇GraphQL API?
在開始操作前,有必要了解為何舊方法不再是首選,以及GraphQL成為當前趨勢的原因。過去的靜態網站將數據直接嵌入HTML源碼中,而現代的Web應用則更傾向於通過API在後端動態請求數據並呈現在前端介面。

上圖比較了不同方法的特性。自2025年以來,傳統爬蟲因其穩定性較低、維護成本較高,已不適合用於獲取HKJC的即時數據。直接與GraphQL API交互,則成為了一種高效且穩定的選擇。
什麼是GraphQL?GraphQL是一種API查詢語言,它允許客戶端精確定義其所需的數據結構。伺服器根據該結構返回相應的數據,這種方式避免了傳統REST API中可能出現的數據冗餘或不足的問題,從而提升了數據交互的效率。
實戰教學:獲取HKJC足球數據的步驟
以下將以獲取HKJC足球數據為例,分步說明操作流程。
步驟一:前期分析——使用瀏覽器開發者工具
為了與API進行交互,首先需要了解其通信方式。瀏覽器的開發者工具(DevTools)是一個有效的分析工具。
打開開發者工具:在Chrome或Edge瀏覽器中訪問HKJC足智彩網站,按下F12鍵,打開開發者工具面板。
切換至「網路(Network)」標籤頁:點擊面板頂部的「Network」標籤。
篩選並定位GraphQL請求:在篩選框中輸入graphql或base,然後刷新頁面。此時應能看到一個名為base的請求,這就是目標GraphQL API請求。
分析請求細節:點擊此base請求,右側會顯示詳細資訊。需要關注三個核心部分:
Headers (標頭):包含請求的URL (https://info.cld.hkjc.com/graphql/base/ )和必要的HTTP標頭,如User-Agent和Referer。
Payload (負載):定義了向API請求的具體內容,即GraphQL的查詢語句(query)和參數(variables)。
Preview/Response (預覽/回應):顯示API返回的JSON格式數據。

上圖標示了在開發者工具中需要關注的關鍵區域。
步驟二:核心代碼——使用Python發送GraphQL請求
完成分析後,即可編寫Python代碼來模擬瀏覽器的行為,以自動化方式獲取數據。
數據獲取流程如圖所示:Python腳本模擬瀏覽器,將包含特定標頭和查詢內容的POST請求發送至HKJC的GraphQL端點,隨後接收返回的JSON數據。


以下是一個Python腳本示例,可供參考。

步驟三:數據整理——將JSON轉換為Pandas DataFrame
API返回的原始JSON數據需要經過整理才便於分析。pandas庫可將其轉換為表格形式的DataFrame結構。
可將以下數據處理代碼添加至Python腳本中:

運行此腳本後,將生成一個名為hkjc_football_data.csv的文件,其中包含結構化的比賽及賠率數據,可供進一步分析。
可獲取的數據類型

通過修改GraphQL查詢中的fbOddsTypes變量,可以獲取多種投注類型的數據。
上圖展示了部分常用的數據類型。API提供了豐富的數據點,包括基本盤口、半場數據、總入球、角球以及球員相關盤口等,為量化分析提供了充足的數據來源。
常見問題 (FAQ)
Q1: 此方法是否需要付費?
A: 不需要。此方法是通過訪問HKJC的公開API來獲取數據,與普通用戶瀏覽網站性質相同,無需付費。
Q2: 數據請求的頻率應如何設置?
A: 建議設置合理的請求間隔。對於個人研究,數分鐘請求一次通常已足夠。過於頻繁的請求(如每秒數次)可能對服務器造成負擔,並可能導致IP被限制訪問。
Q3: 請求返回錯誤或沒有數據應如何處理?
A: 常見原因包括:1) HTTP標頭不正確,需確保Referer等標頭設置正確;2) GraphQL查詢語句變更,HKJC可能更新API結構,屆時需使用開發者工具重新獲取查詢語句。
Q4: 此方法是否適用於賽馬數據?
A: 是的,原理相同。只需在瀏覽HKJC賽馬頁面時,通過開發者工具找到對應的GraphQL查詢,並替換示例中的足球查詢即可。
總結
隨著HKJC在2025年後更新其網站架構,直接與GraphQL API交互已成為獲取其數據的一種主流方法。掌握這項技術,將有助於穩定地獲取大量即時、準確的數據。
本指南介紹了從分析、編碼到數據處理的相關步驟。希望這些資訊能為你的數據分析項目提供幫助。



