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 隐藏自动化痕迹
- 必要时切换为有头模式
1 Response