Python API 開放資料串接,抓取台北市政府公開資料!【Python練習Day7】

第七天來練習Python API公開資料串接,這篇屬於「實作」性質,是利用Python的API功能去抓取台北市政府的公開資料,有實際產出覺得有趣很多。

跟著彭彭老師的影片Key,很快就完成,而且完成後真的有作品產出,練習起來蠻有成較感的,另外也有自己做一個小小變化題來練習。

Python API
Python API

Python 公開資料串接


本篇練習使用資料來源是臺北市資料大平臺,裡面有很多公開給市民的資料,資料類型分為Excel、線上圖表和API,這次我們使用的是API串接方式,練習的資料分別是臺北市內湖科技園區廠商名錄臺北旅遊網景點資料(中文)

API網址取得方式

登入臺北市資料大平臺後,裡面可以搜尋尋找想要串接的資料源,接著選擇API後,就可以複製該資料的API網址。

1607686137996

如何用Python抓取台北市政府公開資料

臺北市資料大平臺 Python

利用Python API串接台北市政府公開資料(Json)步驟

1.載入網路連線模組

載入Python內建的網路連線模組urllib。

2.載入Json解讀模組

由於要撈取的資料為Json格式,因此必須載入Json模組。

3.使用json.load取得資料

使用Json.load讀取資料。

4.取出需要的資料

資料抓取下來要有解讀跟整理才有意義,因此用迴圈印出需要部份。

練習:用API串接台北市景點資料,並讓使用者搜尋後印出交通資訊。

跟著影片完成後不過癮,想了一個變化題來練習。

功能

1.讓使用者輸入想查詢的景點
2.依據使用者輸入的景點,印出交通資訊

遇到問題

關鍵字查詢:比如說輸入「溫泉」可以印出所有台北市溫泉資料,而不是只能搜尋景點完整名稱(EX:北投溫泉區)。

#練習,載入台北市景點資料,
#並讓使用者輸入後,印出相關資訊
import urllib.request as req
import json 
url3="https://data.taipei/api/v1/dataset/36847f3f-deff-4183-a5bb-800737591de5?scope=resourceAquire"

with req.urlopen(url3) as res3:
  data3=json.load(res3)

clist_3=data3["result"]["results"]


x=input("請輸入景點名稱:")

for stitle in clist_3:
  if x in stitle["stitle"]:
    print("景點名稱:"+stitle["stitle"]+"\n"+"景點類型:"+stitle["CAT2"]+"\n"+"交通資訊:"+stitle["info"]+"\n"+"\n")

執行結果

請輸入景點名稱:溫泉

景點名稱:新北投溫泉區
景點類型:養生溫泉 交通資訊:新北投站下車,沿中山路直走即可到達公車:216、218、223、230、266、602、小6、小7、小9、、小22、小25、小26至新北投站下車

景點名稱:陽明山溫泉區
景點類型:養生溫泉
交通資訊:捷運站名:捷運劍潭站,轉乘260、紅5公車至陽明山站。公車:109、260、260(區間車)、小9、小9(區間車)、紅5至陽明山站。

景點名稱:北投溫泉博物館
景點類型:藝文館所
交通資訊:新北投站下車,沿中山路直走即可到達公車:216、218、223、230、266、602、小6、小7、小9、、小22、小25、小26至新北投站下車

本次練習檔與影片

練習檔網址:Day7(12/8)Python 網路連線程式、公開資料串接
影片列表:Python 網路連線程式、公開資料串接

【Python新手練習】相關文章

【Python新手練習】系列文,是一個行銷人學習Python的筆記,希望可以藉由練習程式,訓練更強大的邏輯思考,如果你也對這塊有興趣,這些文章或許可以幫助到你!也歡迎一起交流。

行銷人的Python練習90計畫-為什麼要學Python?
Day0:Google Colab新手Python開發環境推薦
Day1:Python變數與資料型態
Day2:Python判斷式與迴圈(流程控制)
Day3:Python函式 定義、呼叫與回傳
Day4:載入Python模組與使用
Day5:Python檔案讀取和儲存
Day6:Python亂數與統計
Day7:Python API 開放資料串接,抓取台北市政府公開資料
Day8:Python實體物件建立與使用
Day9:Python爬蟲實戰!抓取PTT電影版

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *