更新於 2024/12/11閱讀時間約 5 分鐘

網路爬蟲(Web Scraping)簡介與實作

關於爬蟲這個主題已經有許多前輩介紹了,但我現在才開始學習。本篇也會實際操作我自己嘗試的網路爬蟲。

1. 爬蟲簡介

什麼是網路爬蟲?

網路爬蟲(Web Scraping) 就像在網路上「自動蒐集資料的機器人」。

想像情境:

你是一個學生,想蒐集補習班課程的資料。如果你手動查詢每個補習班的課程、時間與價格,會非常耗時。這時,爬蟲 就像一個自動助教,幫你到各個補習班網站,自動找出相關資訊並存入資料庫


爬蟲的工作流程

  1. 發送請求(Request):爬蟲像瀏覽器一樣,向網站發出請求,索取資料。
  2. 接收回應(Response):網站回應 HTML 網頁內容。
  3. 資料解析(Parsing):爬蟲從 HTML 中挑出有用的資料
  4. 儲存資料(Storage):將蒐集到的資料存進檔案或資料庫

然而並不是每個網站都可以直接爬蟲,有些網站會禁止爬蟲,因為大量的爬蟲會使小型的 Server 崩潰。不能大規模的爬蟲,又要提供使用者一些資料,就會使用 API 這個功能


2. API 是一個窗口

什麼是 API?

API(Application Programming Interface) 就像網站提供的自動窗口

補習班比喻:查詢窗口

  • API = 點餐機 (API 是點餐窗口) 就像速食店的自動點餐機,它是一個標準化的窗口,讓你方便點餐,而不需要進廚房自己做漢堡
  • 發送請求 (Request):點餐機(API)是窗口,讓顧客(程式)下訂單。
    • 你只需要選擇餐點、按下確定,點餐機會把訂單傳給廚房。
    • 你不需要知道廚房裡的料理過程(API 背後的伺服器操作)。
    • 點餐的請求格式要標準化,否則系統無法處理。
  • 處理請求 (Server): 廚房(伺服器)處理訂單,製作餐點。
    • 廚房負責處理訂單,製作對應的餐點,並將結果交給點餐機。
  • 回應資料 (Response):顧客(用戶端程式)拿到食物(資料)
    • 最後,你從點餐機拿到完成的食物(API 回應的資料),不用進廚房處理任何細節。

3. 合法爬蟲:爬蟲須知

注意事項:

  1. 網站版權與爬蟲守則:
    • 爬蟲前要查看網站的 robots.txt,了解允許抓取的範圍。
  2. 請求間隔:
    • 不要頻繁發送請求, 否則可能被視為惡意攻擊。
  3. 使用合法 API:
    • 如果網站提供 API,建議優先使用 API,速度更快、結構更穩定。



實際操作爬蟲

[Python爬蟲實例] 104人力銀行:抓取更詳細的職缺資訊,搶先別人一步收到通知!

參考其他工程師的 github(這裡有套件),原本想要用 LinkedIn 上的 ABB 亞太職缺資料 Web Scraping 結果花了 2 小時一直找不到 HTML 的 Class,希望再學完網頁後再試著練習。再來嘗試104 人力銀行的查詢也是停在從網頁抓 Header 就找不到,所以我學完網頁會再試試。

  1. 下載套件要在 Terminal 用。

結果只能先爬有 API 的嗚嗚

爬取臺灣銀行牌告匯率

(直接點標題有教學文章)

臺灣銀行的連結與API https://rate.bot.com.tw/xrt

可以抓出當下的即時匯率:


(取自網友提供的程式碼)

import requests

url = 'https://rate.bot.com.tw/xrt/flcsv/0/day' # 牌告匯率 CSV 網址
rate = requests.get(url) # 爬取網址內容
rate.encoding = 'utf-8' # 調整回應訊息編碼為 utf-8,避免編碼不同造成亂碼
rt = rate.text # 以文字模式讀取內容
rts = rt.split('\n') # 使用「換行」將內容拆分成串列
for i in rts: # 讀取串列的每個項目
try: # 使用 try 避開最後一行的空白行
a = i.split(',') # 每個項目用逗號拆分成子串列
print(a[0] + ': ' + a[12]) # 取出第一個 ( 0 ) 和第十三個項目 ( 12 )
except:
break
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.