HOWTO-到中央氣象局抓取目前氣溫資料
- 先到中央氣象局的開放資料庫平台註冊一免費帳號,需要有email即可註冊。
- 登入該網站,點選取得授權碼,即可獲得一組如下的授權碼 CWB-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- 參考使用說明文件,學習如何在瀏覽器的網址列輸入查詢網址串。例如,如果要查詢中壢區目前的氣溫可以在網址列輸入https://opendata.cwb.gov.tw/api/v1/rest/datastore/O-A0001-001?Authorization=CWB-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&format=JSON&locationName=中壢&elementName=TEMP
- 利用免費的線上json parser工具(例如:http://json.parser.online.fr/),將取得的資料結構化呈現,以了解所要的資料結構,例如下面左邊是回傳的中壢區目前的溫度資料,結構化的結果在右邊。可以看到我們要的溫度資料 27.6 在一個很深巢狀結構下,依次是 root -> records -> location -> weatherElement -> elementValue
- 在 Python 中,利用 urllib.request 模組連線上面的查詢網址,下載後,利用 json 模組將下載的資料內容轉成 Python 中的字典類型,然後就可以用字典的 Key 當索引去取得我們要的內容。程式碼如下:
import urllib.request as ur
import json
url='https://opendata.cwb.gov.tw/api/v1/rest/datastore/O-A0001-001?Authorization=CWB-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&format=JSON&locationName=%E4%B8%AD%E5%A3%A2&elementName=TEMP'
site = ur.urlopen(url)
page = site.read()
contents = page.decode()
data = json.loads(contents)
temp = data['records']['location'][0]['weatherElement'][0]['elementValue']
print( temp)
※將中文轉換程百分比符號的ASCII碼: https://www.url-encode-decode.com/
※氣象局自動量測站的數據欄位代號說明文件:https://opendata.cwb.gov.tw/opendatadoc/DIV2/A0001-001.pdf
- 台灣公部門更多的開放數據可以在此網站找到https://data.gov.tw/