JSON 資料擷取

Da-Wei Chiang

大綱

  • 如何使用python解析JSON物件
  • Chrome輔助JSON外掛
  • 擷取JSON資料

如何使用python解析JSON物件?

  • 使用相應套件json解決
  • json對應的是python dict的資料結構

Chrome輔助JSON外掛

JSON View

擷取JSON資料

# 擷取
requests.json()
In [4]:
## 範例

import requests
import json
request_url = "https://ws.hsinchu.gov.tw/001/Upload/1/opendata/8774/1177/c2fd8ca1-812b-4f5a-a953-88e5f8a73c48.json"
response = requests.get(request_url)
json_data = response.json()
print(type(json_data))
print(json_data)
#寫出檔案
with open("government.json", 'w', encoding='utf-8') as file:
    file.write(json.dumps(json_data))
    #file.write(json.dumps(json_data, ensure_ascii=False).encode('utf8').decode())
#讀入檔案
with open('government.json') as json_object:
    data = json.load(json_object)
print(data)
<class 'list'>
[{'考試種類及等別': '公務人員高考三級', '109年新竹縣政府公務人員考試新進人員人數': '12'}, {'考試種類及等別': '公務人員普通考試', '109年新竹縣政府公務人員考試新進人員人數': '23'}, {'考試種類及等別': '公務人員初等考試', '109年新竹縣政府公務人員考試新進人員人數': '5'}, {'考試種類及等別': '地方特考三等考試', '109年新竹縣政府公務人員考試新進人員人數': '4'}, {'考試種類及等別': '地方特考四等考試', '109年新竹縣政府公務人員考試新進人員人數': '12'}, {'考試種類及等別': '地方特考五等考試', '109年新竹縣政府公務人員考試新進人員人數': '5'}, {'考試種類及等別': '原住民族特考四等考試', '109年新竹縣政府公務人員考試新進人員人數': '1'}, {'考試種類及等別': '身心障礙特考三等考試', '109年新竹縣政府公務人員考試新進人員人數': '1'}, {'考試種類及等別': '身心障礙特考五等考試', '109年新竹縣政府公務人員考試新進人員人數': '1'}, {'考試種類及等別': '合計', '109年新竹縣政府公務人員考試新進人員人數': '64'}]
[{'考試種類及等別': '公務人員高考三級', '109年新竹縣政府公務人員考試新進人員人數': '12'}, {'考試種類及等別': '公務人員普通考試', '109年新竹縣政府公務人員考試新進人員人數': '23'}, {'考試種類及等別': '公務人員初等考試', '109年新竹縣政府公務人員考試新進人員人數': '5'}, {'考試種類及等別': '地方特考三等考試', '109年新竹縣政府公務人員考試新進人員人數': '4'}, {'考試種類及等別': '地方特考四等考試', '109年新竹縣政府公務人員考試新進人員人數': '12'}, {'考試種類及等別': '地方特考五等考試', '109年新竹縣政府公務人員考試新進人員人數': '5'}, {'考試種類及等別': '原住民族特考四等考試', '109年新竹縣政府公務人員考試新進人員人數': '1'}, {'考試種類及等別': '身心障礙特考三等考試', '109年新竹縣政府公務人員考試新進人員人數': '1'}, {'考試種類及等別': '身心障礙特考五等考試', '109年新竹縣政府公務人員考試新進人員人數': '1'}, {'考試種類及等別': '合計', '109年新竹縣政府公務人員考試新進人員人數': '64'}]

練習

  • 請抓取新竹公園JSON資料集,並儲存為park.json檔案
  • 並回答以下問題
    • JSON共有幾筆資料?
    • 資料中共有幾個不同的區別?
    • 哪個區別的公園最多?有幾個?