昨天實戰了用 Python 向貓咪圖片的 API 請求。使用者可以輸入一個數字,讓程式可以爬取多張貓咪照片。
今天要實戰的是分析 CDC 網站,找出確診者數量的 API ,之後寫個小程式能夠向其發出請求。
衛生福利部疾病管制署官網 : https://www.cdc.gov.tw/
可以看到官網上有出現確診者的數量。
起手式,先用開發工具的 Network 功能,並按下 F5 分析一下向外與向內的流量。
接下來,那些 dash 的看起來很可疑,每個點開來看看 response 看一下內容。發現 dash3 這個的回應內容應該就是我們想要的。
我們找到了! 再來,點選 Header 看如何對其發出請求。
簡單地,這只是個普通的 GET 請求,我們能直接將 Request URL 貼到網址,看回傳的回應。
最後,只要寫個簡單的小程式向 https://covid19dashboard.cdc.gov.tw/dash3 發出 requests GET 請求。
import requests
if __name__ == '__main__':
CDCApi = 'https://covid19dashboard.cdc.gov.tw/dash3'
resp = requests.get(CDCApi)
print(resp.text)
'''
{"0":{"確診":"16,305","死亡":846,"送驗":"3,602,515","排除":"3,585,122","昨日確
診":7,"昨日排除":"13,046","昨日送驗":"12,506"}}
'''
接下來,用兩種方法取出確診者的位置,轉換為 JSON 之後用字典的方式存取,或者用 regex 來取出該位置的值。
import requests
import json
if __name__ == '__main__':
CDCApi = 'https://covid19dashboard.cdc.gov.tw/dash3'
resp = requests.get(CDCApi)
json_resp = json.loads(resp.text)
print(json_resp['0']['昨日確診'])
'''
7
'''
import requests
import re
if __name__ == '__main__':
CDCApi = 'https://covid19dashboard.cdc.gov.tw/dash3'
resp = requests.get(CDCApi)
regex_result = re.findall('"昨日確診":(\d+),', resp.text)
print(regex_result[0])
'''
7
'''
今天帶各位看了 CDC 官網,並找到了他們的確診者數量的 API ,撰寫了個小程式向其發出了一個請求。
關於這個 API ,筆者之前有寫一個 line bot https://github.com/Vincent550102/covid19-daily-alert 定時爬取確診者數量,並傳 line 提醒,但之後因為 Line API 的push_message 有上限就先關掉了QQ。
明天會帶各位實戰用 Dcard 的 API 來快速爬取文章。
CDC 官網 https://www.cdc.gov.tw/