2019年12月12日 星期四

Python:抓取政府資料開放平台JSON資料存入SQLite

Python中抓取 JSON 與解析 JSON 可以很快速,這裡以「政府資料開放平台」的「宜蘭縣加油站資料」資料為例,將抓取後的JSON存入SQLite中。
以 Python 取回資料JSON,資料格式為 List 類型。
import requests
url = "http://www.ilepb.gov.tw/api/ILEPB01001/format/JSON"
jd = requests.get(url).json()
jd

資料格式為List,所以可以直接放到 Pandas 中
import requests
import pandas as pd

url = "http://www.ilepb.gov.tw/api/ILEPB01001/format/JSON"
jd = requests.get(url).json()
df = pd.DataFrame(jd)
df = df.set_index('加油站名稱')
df.head()

最後寫入SQLite中,並取出資料。
import sqlite3
conn = sqlite3.connect("gas.sqlite3")
df.to_sql('point', conn, if_exists='replace')
df = pd.read_sql("select * from point", conn, index_col=['加油站名稱'])
df.head()

上面兩部分的寫法做一下結合就可以完成抓取資料到SQLite的Python程式碼。

最後提供另一種寫法完成這一回合的介紹,由於資料格式為JSON,而 Pandas 有支援直接讀取JSON,因此我們可直接改用 Pandas 來完成。
import requests
import pandas as pd
import sqlite3

url = "http://www.ilepb.gov.tw/api/ILEPB01001/format/JSON"
df = pd.read_json(url)
df = df.set_index('加油站名稱')
conn = sqlite3.connect("gas.sqlite3")
df.to_sql('point', conn, if_exists='replace')
df = pd.read_sql("select * from point", conn, index_col=['加油站名稱'])
df.head()

沒有留言:

張貼留言