Selenium Python 網頁爬蟲入門指南

最後更新於 June 16, 2025

當我第一次接觸網頁爬蟲時,心裡還想說:「這應該很簡單吧?抓個 HTML 不就搞定了?」結果一路摸索下來才發現,網頁爬蟲早就變成銷售、電商、甚至市場研究等領域不可或缺的技能。網路上的資料量爆炸成長————各行各業都想從中挖掘洞見。但現實是:大多數資料都藏在動態網頁、JavaScript 或互動元件背後,傳統工具根本碰不到。

這時候,像 Selenium 這類 Python 爬蟲工具就派上用場了。Selenium Python 可以自動操作真實瀏覽器,連最難搞的動態網站也能輕鬆抓下來。不過,這條路也不是完全無痛,這篇新手教學會帶你實戰演練——以 商品資料為例,讓你親眼見識 Selenium 的威力。同時,我也會介紹像 這類人工智慧網頁爬蟲工具,怎麼用更快、更簡單的方式完成同樣的任務,甚至幾乎不用寫程式。

為什麼網頁爬蟲很重要?(還有動態網站到底多難搞)

先說清楚:網頁爬蟲早就不是工程師的專利,現在銷售、行銷、電商、營運等團隊都在用。想追蹤競品價格?開發潛在客戶?分析顧客評論?爬蟲就是你的秘密武器。事實上, 都以價格資料為首要目標,而線上資料有 80–90% 都是非結構化——你沒辦法直接複製貼上到 Excel 就完事。

但問題來了:現代網站幾乎都是動態的。內容靠 JavaScript 載入、資料藏在按鈕後面,或是要一直往下滑才會出現。像 requests 或 BeautifulSoup 這類簡單爬蟲,只能看到靜態 HTML——就像在看永遠不會更新的報紙。如果你要的資訊必須點擊、滑動或登入後才會顯示,那你就需要一個能模擬真實用戶操作的工具。

什麼是 Selenium Python?為什麼適合做網頁爬蟲?

簡單來說,Selenium 是一套瀏覽器自動化工具。你可以用 Python 寫腳本,讓它自動操作瀏覽器——點擊、填表單、滑動頁面,甚至抓取那些互動後才出現的資料。

Selenium Python 跟傳統爬蟲有什麼不同?

  • Selenium Python:能自動操作真實瀏覽器(像 Chrome),執行 JavaScript,互動動態元素,還能等內容載入——就像真人一樣。
  • Requests/BeautifulSoup:只能抓靜態 HTML,速度快、資源省,但沒辦法處理 JavaScript 或互動內容。

你可以把 Selenium 想像成你的機器人助理:只要你指令下得清楚,它能幫你完成瀏覽器裡的所有操作,但也需要一點耐心。

什麼情境適合用 Selenium?

  • 無限滾動頁面(像社群媒體、商品列表)
  • 互動式篩選或下拉選單(例如在 選鞋碼)
  • 需要登入或有彈窗的內容
  • 單頁應用程式(像 React、Vue 等)

如果只是單純抓靜態網頁內容,用 BeautifulSoup 就夠了。但遇到動態網頁,Selenium 就是你的好夥伴。

Selenium Python 環境安裝教學

在開始實作前,先把工具準備好。每一步都很簡單,完全不需要程式基礎。

1. 安裝 Python 與 Selenium

首先,確認你已經安裝 Python 3。可以到 下載。檢查方式:

python --version

接著用 pip 安裝 Selenium:

pip install selenium

這樣就能取得最新版的 Selenium 套件,超簡單!

2. 下載並設定 ChromeDriver

Selenium 需要「驅動程式」來控制瀏覽器。以 Chrome 為例,就是

  • 查詢你的 Chrome 版本:打開 Chrome,點選選單 → 說明 → 關於 Google Chrome。
  • 下載對應版本的 ChromeDriver:選擇跟瀏覽器版本一樣的驅動程式。
  • 解壓縮並放置驅動程式:把 chromedriver.exe(或 Mac/Linux 對應檔案)放到系統 PATH 或專案資料夾裡。

小提醒: 有些 Python 套件像 webdriver_manager 可以自動下載驅動程式,但新手手動設定也沒問題。

3. 測試環境是否安裝成功

建立一個叫 test_selenium.py 的 Python 檔案:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")
print(driver.title)
driver.quit()

執行後,應該會看到 Chrome 自動開啟、進入 ,印出網頁標題,然後自動關閉。如果看到「Chrome 正由自動化測試軟體控制」的訊息,恭喜你,環境 OK!

Selenium Python 實戰:爬取 商品資料

現在來實作 Selenium 爬蟲,目標是抓取 的商品名稱與價格。

步驟 1:啟動瀏覽器並前往目標頁面

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.allbirds.com/collections/mens")

步驟 2:等待動態內容載入

動態網站不一定馬上顯示內容,需用 Selenium 的等待功能:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "div.product-card"))
)

(建議先用瀏覽器開發者工具確認 CSS Selector,這裡假設商品卡片用 div.product-card。)

步驟 3:定位元素並擷取資料

products = driver.find_elements(By.CSS_SELECTOR, "div.product-card")
print(f"Found {len(products)} products")
data = []

for prod in products:
    name = prod.find_element(By.CSS_SELECTOR, ".product-name").text
    price = prod.find_element(By.CSS_SELECTOR, ".price").text
    data.append((name, price))
    print(name, "-", price)

你會看到類似這樣的輸出:

Found 24 products
Wool Runner - $110
Tree Dasher 2 - $135
...

步驟 4:將資料存成 CSV 檔

把結果寫入 CSV:

import csv
with open("allbirds_products.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Product Name", "Price"])
    writer.writerows(data)

最後別忘了關閉瀏覽器:

driver.quit()

打開 CSV,就能看到所有商品名稱與價格,方便後續分析。

Selenium Python 常見爬蟲難題與解法

實際爬蟲過程常常遇到各種狀況,以下是幾個常見挑戰與解決方式:

等待元素載入

動態網站載入速度不一,建議用顯式等待:

WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, ".product-card"))
)

這樣可以避免腳本還沒等到資料就開始抓,導致錯誤。

處理分頁

想抓多頁資料?可以用迴圈點擊「下一頁」:

while True:
    try:
        next_btn = driver.find_element(By.LINK_TEXT, "Next")
        next_btn.click()
        WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".product-card")))
    except Exception:
        break  # 沒有下一頁就結束

或是遇到無限滾動頁面:

import time
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

處理彈窗與登入

遇到彈窗擋路?直接關閉:

driver.find_element(By.CSS_SELECTOR, ".modal-close").click()

自動登入?填寫欄位並送出:

driver.find_element(By.ID, "email").send_keys("user@example.com")
driver.find_element(By.NAME, "login").click()

但要注意:CAPTCHA 或雙重驗證通常很難自動化。

Selenium Python 做網頁爬蟲的限制

老實說,Selenium 雖然強大,但也有不少缺點:

  • 速度慢:每次都要完整開啟瀏覽器,還要載入圖片和腳本。要抓 1,000 頁?請準備好等很久。
  • 資源消耗大:CPU、記憶體吃很兇。要同時跑多個瀏覽器?電腦要夠強才行。
  • 安裝與維護繁瑣:驅動程式要對應瀏覽器版本,網站一改版腳本就壞掉,維護成本高。
  • 容易壞掉:網站只要小改版,腳本可能馬上失效。
  • 資料後處理需手動:想翻譯描述、做情感分析?還得額外串接其他函式庫或 API。

對於不懂程式的商業用戶來說,Selenium 常常讓人覺得大材小用。

selenium 1.jpeg

Thunderbit:AI 驅動的 Selenium Python 替代方案

現在來介紹一個專為商業用戶設計的工具:。Thunderbit 是一款人工智慧網頁爬蟲 Chrome 擴充功能,讓你無需寫程式、無需安裝環境,只要幾個點擊就能抓取任何網站資料。

Thunderbit 有哪些獨特優勢?

  • AI 欄位自動辨識:點一下「AI 建議欄位」,Thunderbit 會自動判斷哪些資料該抓——商品名稱、價格、圖片等。
  • 子頁面自動爬取:需要抓取商品詳情?Thunderbit 能自動點擊進入子頁面,補抓更多資訊。
  • 資料增強:即時翻譯描述、摘要內容、情感分析,邊抓邊處理。
  • 一鍵匯出:資料可直接匯出到 Excel、Google Sheets、Notion、Airtable,完全免寫程式。
  • 零程式介面:專為非工程師設計,只要會用瀏覽器就能上手。

我自己有參與 Thunderbit 的開發,真心覺得這是商業團隊取得結構化網頁資料最快速的方式,特別適合銷售、電商、研究等需求。

Thunderbit 與 Selenium Python 功能對比

來看看兩者的差異:

比較項目Selenium PythonThunderbit(AI 零程式)
安裝時間中等到複雜——需安裝 Python、Selenium、ChromeDriver、寫程式極快——安裝 Chrome 擴充,幾分鐘搞定
所需技能高——需懂程式與 HTML低——點選操作,AI 自動處理
動態內容處理極佳——可處理 JS、點擊、滾動極佳——直接在瀏覽器運作,支援 AJAX、無限滾動、子頁面
速度慢——瀏覽器負擔大小型/中型任務快——AI 自動偵測,直接存取 DOM
擴展性難以擴展——資源消耗大適合數百/數千筆資料;不適合大規模批次爬取
資料處理手動——需自行寫資料清理、翻譯、情感分析自動——AI 可即時翻譯、摘要、分類、增強資料
匯出選項需自寫程式匯出 CSV、Sheets 等一鍵匯出到 Excel、Google Sheets、Notion、Airtable
維護成本高——網站改版易壞低——AI 可自動適應多數版型變動,維護簡單
獨特功能完整瀏覽器自動化、自訂流程AI 洞察、現成範本、資料增強、免費提取器

對大多數商業用戶來說,Thunderbit 就像一股清流——再也不用為程式碼或驅動程式煩惱。

實戰案例:用 Thunderbit 爬取 商品資料

來看看 Thunderbit 如何完成同樣的 任務:

  1. 安裝
  2. 前往
  3. 點擊 Thunderbit 圖示,選擇「AI 建議欄位」
    • Thunderbit 會自動偵測「商品名稱」、「價格」、「商品網址」等欄位
  4. (可選)新增「描述(日文)」或「情感分析」欄位
    • Thunderbit 會自動翻譯或分析情感
  5. 點擊「開始抓取」
    • Thunderbit 會自動將所有商品資料整理成表格
  6. 一鍵匯出到 Google Sheets、Notion 或 Excel

完全不用寫程式、不用等瀏覽器載入、不用手動處理 CSV。資料結構化,馬上可用。

什麼時候該用 Selenium Python?什麼時候該選 Thunderbit?

該選哪個工具?我的建議如下:

  • 適合用 Selenium Python 的情境:
    • 你是開發者,或需要完全掌控自動化流程
    • 爬蟲任務高度客製化,或需整合進大型軟體專案
    • 需自動化複雜流程(如登入、下載、多步驟表單)
    • 需要大規模爬取(有相應基礎設施)
  • 適合用 Thunderbit 的情境:
    • 你是商業用戶、分析師、行銷人員,需要快速取得資料
    • 不想碰程式碼或安裝環境
    • 需要即時翻譯、情感分析或資料增強
    • 任務規模為小型到中型(數百到數千筆)
    • 希望直接匯出到 Excel、Google Sheets、Notion、Airtable

老實說,我看過不少團隊花好幾天寫 Selenium 腳本,結果 Thunderbit 10 分鐘就搞定。除非你真的需要高度自訂或大規模爬取,Thunderbit 通常是更快、更友善的選擇。

selenium 2.jpeg

加碼:負責任且高效的網頁爬蟲小技巧

在你大展身手之前,幾個重要提醒:

  • 遵守 robots.txt 與網站服務條款:務必確認網站允許爬蟲,若明文禁止請勿強行抓取。
  • 控制請求頻率:不要對伺服器造成負擔,適當延遲或設置速率限制。
  • 必要時更換 User-Agent/IP:可降低被封鎖風險,但切勿違反網站政策。
  • 避免抓取個人或敏感資料:只抓公開資訊,並遵守隱私法規(如 GDPR)。
  • 有 API 優先用 API:官方 API 更穩定安全。
  • 未經授權勿抓取登入或付費內容:這涉及法律與道德問題。
  • 記錄操作並妥善處理錯誤:若被封鎖,請調整策略,不要硬碰硬。

想了解更多爬蟲合規與道德,推薦參考

結語:選擇最適合你的網頁爬蟲工具

網頁爬蟲技術日新月異,從手動腳本到 AI 零程式工具。Selenium Python 適合開發者處理複雜動態網站,但學習曲線與維護成本較高。對大多數商業用戶來說,Thunderbit 提供更快、更簡單的結構化資料取得方式,還能即時翻譯、情感分析、一鍵匯出。

我的建議?兩種方法都可以試試。開發者可以用 Selenium 練習爬取 ,體驗整個流程。如果你想快速看到成果(或不想被技術卡住),不妨直接試用 。有免費方案,馬上就能在你最關心的網站上實測。

最後提醒:請負責任地爬取資料,善用資訊,祝你 IP 永不被封!

想深入了解?這些資源推薦給你:

免費體驗 Thunderbit 人工智慧網頁爬蟲
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Selenium PythonPython 爬蟲Selenium 教學
立即體驗 Thunderbit
用 AI 輕鬆抓取網頁資料,零技術門檻。
提供免費方案
支援繁體中文
目錄
用 AI 擷取資料
輕鬆將資料匯入 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week