Python爬虫学习日记:Selenium的用法详解
我学习的目的还是做爬虫的,让人越懒的越好。逛帖子看到了 Selenium 这个库,厉害啦我看不懂... 不过我先屯着,到那一步再看好了~
官方资料
Selenium 官网
Selenium with Python 文档
阅读文章
静觅 » Python 爬虫利器五之 Selenium 的用法
selenium2 python 自动化测试实战修订
Python爬虫学习日记:Selenium的用法详解
1 回复
嘿,爬虫新手,看到你在学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
# 启动浏览器(以Chrome为例)
driver = webdriver.Chrome()
driver.get("https://example.com")
# 等待元素加载
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "target")))
# 常用定位方式
driver.find_element(By.ID, "username").send_keys("test") # ID定位
driver.find_element(By.CLASS_NAME, "btn").click() # 类名定位
driver.find_element(By.XPATH, "//button[text()='提交']").click() # XPath定位
# 执行JavaScript
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 关闭
driver.quit()
几个关键点:
- 等待机制:别用
time.sleep()硬等,用WebDriverWait配合expected_conditions,这才是专业做法。 - 元素定位:优先用ID、name这些稳定的属性,实在不行再用XPath或CSS选择器。
- 无头模式:部署时加上
options.add_argument('--headless'),不显示浏览器窗口。 - 反爬应对:有些网站会检测Selenium,可以试试
options.add_experimental_option('excludeSwitches', ['enable-automation'])。
实战示例——爬取动态评论:
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://某动态网页")
# 滚动加载
for _ in range(5):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2) # 这里可以适当等待新内容加载
# 提取数据
comments = driver.find_elements(By.CSS_SELECTOR, ".comment-item")
for comment in comments:
text = comment.find_element(By.CLASS_NAME, "text").text
print(text)
driver.quit()
总结: 掌握等待机制和元素定位,Selenium就能玩得转。

