Python + Selenium 爬虫实战教程:从入门到进阶

Selenium 虽然是测试工具,但在爬虫领域拥有不可替代的地位——当你需要处理 JavaScript 动态渲染的页面时,它是最可靠的方案之一。本文带你从零开始用 Python + Selenium 采集动态网页。

环境搭建

pip install selenium webdriver-manager

webdriver-manager 自动管理 ChromeDriver,省去手动下载和版本匹配的麻烦。

基础用法

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://example.com")
print(driver.title)
print(driver.page_source)
driver.quit()

无头模式 + 代理

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument("--proxy-server=http://user:pass@proxy_ip:port")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=options)

等待和定位元素

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

# 等待元素出现
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "content"))
)

# 提取数据
items = driver.find_elements(By.CSS_SELECTOR, ".product .price")
for item in items:
    print(item.text)

处理反爬

  • 设置合理的 User-Agent
  • 使用随机延迟(3-10 秒)
  • 配合代理轮换
  • 注入 JS 隐藏自动化痕迹
  • 必要时切换为有头模式

相关教程

chcrazy

Share