「今日個匯率幾多?」「聽日會唔會落雨?」呢啲問題,其實好多人日日都要上網 check 幾次。但其實你唔使日日襟——寫一個好短嘅 Python 程式,就可以自動幫你攞到最新天氣、匯率,甚至砌埋做每日朝早一封「智能簡報」,開機就有得睇。呢篇就由零開始,教你點用 API 攞即時資料。
乜嘢係 API?
API(Application Programming Interface)簡單嚟講,就係一個「俾程式去問嘢」嘅入口。你想攞天氣,就 send 一個網址出去,對方會回返一堆結構化資料(通常係 JSON 格式)俾你。同你喺瀏覽器襟入去睇唔同,程式可以直接讀到資料,仲可以自動化——呢個先係重點。
順帶一提,JSON 係一種好常用嘅資料格式,睇落似 Python 嘅 dict:用大括號包住,入面係「key : value」一對對。API 回返嚟嘅嘢絕大多數都係 JSON,所以你先要學識 r.json() 呢一步——佢會自動幫你將 JSON 變成 Python dict,之後你想攞邊個 value 就攞邊個。
第一步:安裝 requests
Python 有個內置庫叫 urllib,但好少人直接用,因為 requests 好用十倍。開 terminal 安裝:
第二步:攞香港天氣(Open-Meteo,免費、唔使 key)
Open-Meteo 係一個免費天氣 API,唔使註冊、唔使申請 API key,一 call 就有。我哋攞香港嘅即時溫度、濕度同風速:
三個重點:params 係把查詢參數分開寫,requests 會自動幫你砌落條 URL 度,仲識處理特殊字元;r.json() 直接將回傳嘅 JSON 變成 Python dict;data["current"] 就係即時天氣嗰一組。
第三步:攞匯率(Frankfurter,免費、唔使 key)
匯率我用 Frankfurter,一樣免費唔使 key。例如攞美金兌港紙:
from 係基準貨幣,to 係目標貨幣,Frankfurter 仲支援一次過攞多種(例如 to=HKD,CNY,JPY)。回傳嘅 rates 係一個 dict,直接攞 ["HKD"] 就係匯率。
第四步:合併做「早晨簡報」
學完兩招,可以砌埋一個一 run 就睇晒天氣+匯率嘅小工具:
兩個 function 各自攞一種資料,之後喺主程式合併輸出。f"..." 係 f-string,可以喺字串入面直接放入變數,慳好多打字。
出錯點算?加 timeout 同 try/except
真實世界入面,API 唔係永遠咁順——可能網絡慢、server 忙,甚至個網址暫時死咗。所以正式用嗰陣,記得加 timeout 同 try/except,避免個程式 hang 死或者一嘢 crash:
timeout=10 意思係最多等 10 秒;raise_for_status() 會喺 HTTP 唔係 200 嗰陣自動彈錯,等你唔使去估有冇事。
小貼士:幾時要 API key?
免費 API 一般都有限制,例如一分鐘只准 call 幾次,或者免費版只包基本資料。Open-Meteo 同 Frankfurter 呢啲就完全唔使 key;但好多商業 API(例如 Google、OpenAI、天文台授權數據)就要你註冊、攞條 key,再放喺 header 度先 call 到。呢個留返之後有需要再講。
最後一步:定時自動 run
想佢日日朝早自動 run?Windows 用「工作排程器」(Task Scheduler)揀「每日 08:00」指向你個 script 就搞掂;Mac 用 launchd 都係差唔多。最簡單仲可以用 Python 個 schedule 庫加個無限循環,幾行 code 就做到。呢啲留返下一篇再詳細講。
總結
今篇Python 教學總結: 用 API 攞即時資料,其實一啲都唔難。掌握咗 requests 呢個基本動作,天氣、匯率、股價、交通、新聞……基本上所有「網上有得查」嘅嘢,你都可以寫個程式自動攞返嚟,慳返日日人手襟嘅時間。仲有一個好處:攞返嚟嘅係結構化資料,你可以直接計數、做圖,甚至自動 send 去 WhatsApp 或者 email。下次你想搵咩資料,先諗一諗:「有冇 API 可以攞?」