去年在線上課程中曾看過老師使用中央氣象局的象資料開放平台為範例來講解如何使用 Python 程式透過 API 來擷取網路上的公開資料, 上課時間緊湊也沒機會實作, 今天測試完 Postman 想說順勢註冊一下會員來取得授權碼, 以便後續用 Python 來練習抓資料.
氣象資料開放平台網址如下 :
氣象資料開放平台已改版為須註冊為會員, 然後申請 API 金鑰才能查詢 (以前可以直接抓), 故要先按右上角的 "登入/註冊" 鈕進入登入頁, 初次使用者可以使用 Facebook 帳號登入, 或選擇 "氣象會員登入", 按底下的 "加入會員" :
填好後按 "送出" :
送出成功會收到一封確認信, 開啟 Email 按確認超連結即完成註冊 :
按 "前往資料開放平台" 超連結前往 API 授權碼頁面, 按 "取得授權碼" 鈕會在右邊出現授權碼, 將其複製到安全的地方保存 :
有了這個授權碼即可透過它來抓平台上的氣象資料了, 用法參考開發手冊說明 :
不過還先不用寫程式, 此平台已實作 Web 介面可線上取得 JSON 格式的氣象資料, 請開啟下列網址的任一預報項目 :
按右邊的 "Try it out" 鈕, 這樣才會讓我們可以輸入授權碼與選擇選項 :
可選的參數很多, 但都有預設值, 為了減少傳回值數量, 選擇 LocationName 為高雄市, 然後按底下的 "Execute" 鈕即可, 回應訊息如下 :
{
"success": "true",
"result": {
"resource_id": "F-C0032-001",
"fields": [
{
"id": "datasetDescription",
"type": "String"
},
{
"id": "locationName",
"type": "String"
},
{
"id": "parameterName",
"type": "String"
},
{
"id": "parameterValue",
"type": "String"
},
{
"id": "parameterUnit",
"type": "String"
},
{
"id": "startTime",
"type": "Timestamp"
},
{
"id": "endTime",
"type": "Timestamp"
}
]
},
"records": {
"datasetDescription": "三十六小時天氣預報",
"location": [
{
"locationName": "高雄市",
"weatherElement": [
{
"elementName": "Wx",
"time": [
{
"startTime": "2024-01-18 12:00:00",
"endTime": "2024-01-18 18:00:00",
"parameter": {
"parameterName": "晴時多雲",
"parameterValue": "2"
}
},
{
"startTime": "2024-01-18 18:00:00",
"endTime": "2024-01-19 06:00:00",
"parameter": {
"parameterName": "晴時多雲",
"parameterValue": "2"
}
},
{
"startTime": "2024-01-19 06:00:00",
"endTime": "2024-01-19 18:00:00",
"parameter": {
"parameterName": "多雲",
"parameterValue": "4"
}
}
]
},
{
"elementName": "PoP",
"time": [
{
"startTime": "2024-01-18 12:00:00",
"endTime": "2024-01-18 18:00:00",
"parameter": {
"parameterName": "0",
"parameterUnit": "百分比"
}
},
{
"startTime": "2024-01-18 18:00:00",
"endTime": "2024-01-19 06:00:00",
"parameter": {
"parameterName": "10",
"parameterUnit": "百分比"
}
},
{
"startTime": "2024-01-19 06:00:00",
"endTime": "2024-01-19 18:00:00",
"parameter": {
"parameterName": "20",
"parameterUnit": "百分比"
}
}
]
},
{
"elementName": "MinT",
"time": [
{
"startTime": "2024-01-18 12:00:00",
"endTime": "2024-01-18 18:00:00",
"parameter": {
"parameterName": "24",
"parameterUnit": "C"
}
},
{
"startTime": "2024-01-18 18:00:00",
"endTime": "2024-01-19 06:00:00",
"parameter": {
"parameterName": "20",
"parameterUnit": "C"
}
},
{
"startTime": "2024-01-19 06:00:00",
"endTime": "2024-01-19 18:00:00",
"parameter": {
"parameterName": "20",
"parameterUnit": "C"
}
}
]
},
{
"elementName": "CI",
"time": [
{
"startTime": "2024-01-18 12:00:00",
"endTime": "2024-01-18 18:00:00",
"parameter": {
"parameterName": "舒適"
}
},
{
"startTime": "2024-01-18 18:00:00",
"endTime": "2024-01-19 06:00:00",
"parameter": {
"parameterName": "稍有寒意至舒適"
}
},
{
"startTime": "2024-01-19 06:00:00",
"endTime": "2024-01-19 18:00:00",
"parameter": {
"parameterName": "稍有寒意至舒適"
}
}
]
},
{
"elementName": "MaxT",
"time": [
{
"startTime": "2024-01-18 12:00:00",
"endTime": "2024-01-18 18:00:00",
"parameter": {
"parameterName": "26",
"parameterUnit": "C"
}
},
{
"startTime": "2024-01-18 18:00:00",
"endTime": "2024-01-19 06:00:00",
"parameter": {
"parameterName": "24",
"parameterUnit": "C"
}
},
{
"startTime": "2024-01-19 06:00:00",
"endTime": "2024-01-19 18:00:00",
"parameter": {
"parameterName": "26",
"parameterUnit": "C"
}
}
]
}
]
}
]
}
}
可見氣象資料放在 ['result']['records'] 裡面. 回應訊息可以貼到 JSON Viewer 整理 :
參考 :
沒有留言:
張貼留言