輕鬆學習 Python:透過 API 擷取網站資料

以 requests 與 lxml 套件實踐網站爬蟲

Yao-Jen Kuo
數聚點文摘

--

The world’s most valuable resource is no longer oil, but data.

The Economist

獲取資料(Getting Data)在資料科學專案中扮演攻擊發起點,如果這個專案目的是協助我們制定資料驅動的策略(data-driven strategy),而非傳統倚賴直覺的「根據經驗」策略,那麼為專案細心盤點資料來源與整理獲取方法,將可以為決策奠基穩固的基礎。常見的資料來源可以分為三種:

  1. 檔案
  2. 資料庫
  3. 網頁資料擷取

這個小節將討論第三種資料來源:網頁,簡介如何使用 requests 與 lxml 套件和 Web API(全名為 Web Application Programming Interface)格式的資料來源互動。為什麼網站會選擇使用 API 傳遞資料​​而不是可供下載的靜態資料集檔案呢?原因可能為:

  • 資料更新的速度快、頻率高,生成靜態資料集檔案過於緩慢
  • 使用者可能只需要龐大資料中的一個子集(Subset)
  • 資料有重複運算的特性

接著我們將擷取政府資料開放平台:空氣品質指標(AQI)的 Web API 格式資料作示範,完整程式可以參考這個 Google Colab。

網站爬蟲的核心任務

網站爬蟲的核心任務可以簡單區分為兩個:請求資料(requesting data)與解析資料(parsing data);其中請求資料的運作就像我們在瀏覽器中輸入網址一般,只不過送出請求的管道由瀏覽器改變為 Python 程式碼、從向伺服器請求一個網頁(webpage)改變為資料;解析資料的運作則是將回傳資料內容去蕪存菁,萃取必要的一小部分。

--

--