輕鬆學習 Python:透過 API 擷取網站資料
以 requests 與 lxml 套件實踐網站爬蟲
Published in
13 min readApr 25, 2019
The world’s most valuable resource is no longer oil, but data.
The Economist
獲取資料(Getting Data)在資料科學專案中扮演攻擊發起點,如果這個專案目的是協助我們制定資料驅動的策略(data-driven strategy),而非傳統倚賴直覺的「根據經驗」策略,那麼為專案細心盤點資料來源與整理獲取方法,將可以為決策奠基穩固的基礎。常見的資料來源可以分為三種:
- 檔案
- 資料庫
- 網頁資料擷取
這個小節將討論第三種資料來源:網頁,簡介如何使用 requests 與 lxml 套件和 Web API(全名為 Web Application Programming Interface)格式的資料來源互動。為什麼網站會選擇使用 API 傳遞資料而不是可供下載的靜態資料集檔案呢?原因可能為:
- 資料更新的速度快、頻率高,生成靜態資料集檔案過於緩慢
- 使用者可能只需要龐大資料中的一個子集(Subset)
- 資料有重複運算的特性
接著我們將擷取政府資料開放平台:空氣品質指標(AQI)的 Web API 格式資料作示範,完整程式可以參考這個 Google Colab。
網站爬蟲的核心任務
網站爬蟲的核心任務可以簡單區分為兩個:請求資料(requesting data)與解析資料(parsing data);其中請求資料的運作就像我們在瀏覽器中輸入網址一般,只不過送出請求的管道由瀏覽器改變為 Python 程式碼、從向伺服器請求一個網頁(webpage)改變為資料;解析資料的運作則是將回傳資料內容去蕪存菁,萃取必要的一小部分。