最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

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()

沒有留言:

張貼留言