# 爬蟲教學2-讓電腦讀懂網路的json檔
這次的教學會用到兩個套件
1. request
請安裝這一個套件
有些網站的製作者,會專門給做爬蟲或是數據分析的人一種API。
是對網址的查詢方法,在網址上輸入相對的條件與需求,就能直接的以json的方式顯示在網頁上,並直接爬取。
接下來我們用,CSSE(衛福部疾管署)與TWCC(台灣AI雲)所合作提供的Covid-19大數據資料,來做數據分析吧~
在使用API時,我們可以觀察到網址入下
https://covid-19.nchc.org.tw/api.php?tableID=2001
他在網址的"?"後面有一個"tableID"這個格式就有點像儲存變數的概念,直接透過網址裡面所抓取到的變數找到我們想要的資料。
到我(2022/5/1)的整理,ID共有以下:
>2001-各縣市疫苗接種率
2002-各國疫苗接種率
2003-各梯次COVID-19公費疫苗涵蓋率
2004-各廠牌COVID-19疫苗接種人次
2005-各國家COVID-19疫苗涵蓋率
2006-12 歲以上各縣市 COVID-19 疫苗接種率 (含外籍人士)
3001-各國疫情報表
4001-台灣疫情報表(同3001)
4002-台灣新增死亡COVID-19個案表
4003-台灣COVID-19最新病例、檢驗統計
5001-台灣COVID-19 縣市鄉鎮疫情表單
5002-時間軸-縣市鄉鎮疫情表單
5003-[補零]時間軸-縣市鄉鎮疫情表單
6001-未接種COVID-19疫苗者已登記意願且尚未取得預約資格」登記人數統計
6002-未接種COVID-19疫苗者已登記意願且尚未取得預約資格」登記人數統計_五齡組
```python=
import requests
req = requests.get("https://covid-19.nchc.org.tw/api/covid19?CK=covid-19@nchc.org.tw&querydata=2001", verify=False) #一開始我們一樣先到網頁把資料都抓下來
print(req.text)
```
```python=
#經過上面的執行後你會發現他的所抓到的文字就完全是跟python的dict的格式是一樣的欸!
#這種格式叫做json檔所以我們可以把它直接轉換成dict方便我們來處理資料
req = requests.get("https://covid-19.nchc.org.tw/api/covid19?CK=covid-19@nchc.org.tw&querydata=2001", verify=False)
list_of_dicts = req.json()
```
接下來我們要做查詢的動作,而網頁上也已經有提供查詢對應的key了
![](https://i.imgur.com/PtFh9ZU.png)
所以我們也只需要照著他的方法查詢就可以了喔~
```python=
#我們以查詢每日疫苗施打率來示範
import requests
req = requests.get("https://covid-19.nchc.org.tw/api/covid19?CK=covid-19@nchc.org.tw&querydata=2001", verify=False)
list_of_dicts = req.json()
# {"id":"ID","a01":"日期","a02":"縣市別","a03":"總人口數","a04":"新增接種人次","a05":"累計接種人次","a06":"疫苗覆蓋率 (%)","a07":"累計配送量 (劑)","a08":"剩餘量 (劑)","a09":"剩餘量 (%)","a10":"AZ新增接種人次","a11":"AZ累計接種人次","a12":"AZ疫苗覆蓋率 (%)","a13":"AZ累計配送量 (劑)","a14":"AZ剩餘量 (劑)","a15":"AZ剩餘量 (%)","a16":"Moderna新增接種人次","a17":"Moderna累計接種人次","a18":"Moderna疫苗覆蓋率 (%)","a19":"Moderna累計配送量 (劑)","a20":"Moderna剩餘量 (劑)","a21":"Moderna剩餘量 (%)"}
for i in list_of_dicts:
print(i["a01"], i["a02"], i["a06"])#輸入對應的key產生相對的value
```
---
下一篇:https://hackmd.io/@real7660/rJDPMIm_5