LINE Notify 傳送地震資訊
這篇文章會介紹如何從氣象資料開放平臺裡,取得地震資訊 JSON 檔案,接著使用 Python 的 Requests 函式庫,實作一個可以自動抓取地震資訊的網路爬蟲,最後使用 LINE Notify 發送氣象局的地震位置圖 ( 地震發生當下並不會爬娶到資料,需要等氣象局彙整資料後,才能抓到內容 )。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
取得氣象資料開放平台使用授權碼
參考「爬取天氣預報」文章,註冊並登入「氣象資料開放平臺」,註冊成功後會成為「一般會員」,點擊「取得授權碼」按鈕,會出現個人的授權碼,如果授權碼被盜用或出現問題,可點擊「更新授權碼」重新產生。
尋找地震資訊的資料
點擊「資料主題」,選擇「天氣警特報」,搜尋「地震」,找到「小區域有感地震報告」資料集。
連結:小區域有感地震報告
分別進入後,因為沒有直接提供 JSON 連結,所以必須點擊 API 連結,開啟「中央氣象局開放資料平臺之資料擷取 API」的頁面,輸入個人的授權碼。
輸入後點擊下方的「Execute」,產生地震資訊的 JSON 連結。
用瀏覽器開啟地震資訊,就能觀察 JSON 檔案的結構。
注意,有時候氣象局會修改資料格式的名稱,如果發現讀取錯誤,可以先檢查名稱。
Python 爬取地震資訊
使用 Requests 函式庫的 get 的方法,抓取氣象觀測資料的 JSON 網址,接著使用字典的取值方法,搭配 for 迴圈印出城市名稱、區域名稱和觀測點名稱。
import requests
url = '你取得的地震資訊 JSON 網址'
data = requests.get(url)
data_json = data.json()
eq = data_json['records']['Earthquake']
for i in eq:
loc = i['EarthquakeInfo']['Epicenter']['Location']
val = i['EarthquakeInfo']['EarthquakeMagnitude']['MagnitudeValue']
dep = i['EarthquakeInfo']['FocalDepth']
eq_time = i['EarthquakeInfo']['OriginTime']
img = i['ReportImageURI']
msg = f'{loc},芮氏規模 {val} 級,深度 {dep} 公里,發生時間 {eq_time}'
print(img)
LINE Notify 傳送地震位置圖
參考「發送 LINE Notify 通知」文章,使用 requests 函式庫的 POST 的方法,透過 LINE Notify 將雷達回波圖傳送到 LINE 裡,程式裡的 for 迴圈使用了 break,在取得第一筆資料後就停止迴圈,就能只發送最新的地震資訊。
import requests
url = '你取得的地震資訊 JSON 網址'
data = requests.get(url)
data_json = data.json()
eq = data_json['records']['Earthquake']
for i in eq:
loc = i['EarthquakeInfo']['Epicenter']['Location']
val = i['EarthquakeInfo']['EarthquakeMagnitude']['MagnitudeValue']
dep = i['EarthquakeInfo']['FocalDepth']
eq_time = i['EarthquakeInfo']['OriginTime']
img = i['ReportImageURI']
msg = f'{loc},芮氏規模 {val} 級,深度 {dep} 公里,發生時間 {eq_time}'
print(msg)
token = '你的 LINE Notify 權杖' # 自己申請的 LINE Notify 權杖
headers = {
'Authorization': 'Bearer ' + token # POST 使用的 headers
}
data = {
'message':msg, # 發送的訊息
'imageThumbnail':img, # 預覽圖網址
'imageFullsize':img # 完整圖片網址
}
data = requests.post('https://notify-api.line.me/api/notify', headers=headers, data=data) # 發送 LINE NOtify
break
小結
中央氣象局的氣象資料開放平臺提供了很多好用的即時資料,只要了解爬蟲原理,就可以很輕鬆的抓取資料,進行後續的應用。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~