Skip to content

Selenium簡介

Selenium 是一個可以 自動化操作網頁 的工具,適合用來 測試網頁、模擬點擊、填寫表單,甚至抓取動態網頁的數據。


1. 安裝 Selenium

首先,安裝 selenium

pip install selenium

⚠ 需要 WebDriver!

Note

2022年11月4日之後 ,selenium(4.6.0+)有內建 selenium manager,如果在特定的路徑上沒有找到webdriver,selenium會自動幫你下載。

Selenium 需要瀏覽器的 WebDriver 來操作網頁,請下載與瀏覽器對應的 WebDriver:

下載後,將 WebDriver 放在 Python 可以找到的路徑(例如專案資料夾內)。


2. 使用 Selenium 自動開啟網頁

from selenium import webdriver

# 設定 WebDriver(這裡以 Chrome 為例)
driver = webdriver.Chrome()  # 確保 chromedriver 在路徑內

# 開啟網頁
driver.get("https://www.google.com")

# 顯示標題
print(driver.title)

# 關閉瀏覽器
driver.quit()

3. 找到網頁元素並進行操作

Selenium 可以透過 id、class、tag、CSS selector、XPath 來尋找網頁元素:

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

driver = webdriver.Chrome()
driver.get("https://www.google.com")

# 找到搜尋框,輸入文字
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Selenium Python")

# 提交表單(模擬 Enter)
search_box.submit()

# 等待幾秒(可選)
import time
time.sleep(3)

# 關閉瀏覽器
driver.quit()

4. 模擬按鈕點擊

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

driver = webdriver.Chrome()
driver.get("https://www.google.com")

# 找到搜尋框
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Selenium Python")
search_box.send_keys(Keys.RETURN)  # 按下 Enter 鍵

# 等待 5 秒後關閉
import time
time.sleep(5)
driver.quit()

5. 爬取動態內容

某些網站的內容是透過 JavaScript 動態載入,Selenium 可以等待內容加載後再抓取:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://example.com")

# 等待元素出現(最多等待 10 秒)
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "dynamic-content"))
)

print(element.text)  # 取得動態載入的內容
driver.quit()

6. 無頭模式(Headless Mode)

如果不想開啟視窗,可以使用 無頭模式

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")  # 無頭模式

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

7. 總結

功能 方法
開啟網頁 driver.get(url)
找到元素 find_element(By.ID, "id")
輸入文字 send_keys("text")
點擊按鈕 click()
模擬 Enter send_keys(Keys.RETURN)
等待元素載入 WebDriverWait(driver, 10).until(...)
無頭模式 Options().add_argument("--headless")