Python Selenium 的安装和教程
Selenium
是一款强大的 Web 自动化测试工具,它可以用来模拟浏览器操作、爬取动态数据或进行自动化任务。本文将全面介绍 Selenium
的安装和基本使用,通过代码示例和图解帮助你快速上手。
一、Selenium 的安装
1.1 安装 Selenium 库
首先,你需要安装 selenium
库:
pip install selenium
1.2 下载 WebDriver
Selenium
需要配合浏览器驱动 (WebDriver) 一起使用,不同浏览器对应的驱动如下:
下载后将驱动程序添加到系统的环境变量 PATH
中。
二、Selenium 的基本使用
2.1 启动浏览器
示例代码
以下代码演示如何启动 Chrome 浏览器并打开百度主页:
from selenium import webdriver
# 设置 WebDriver 路径
driver_path = "path/to/chromedriver" # 替换为实际路径
driver = webdriver.Chrome(executable_path=driver_path)
# 打开百度
driver.get("https://www.baidu.com")
# 打印页面标题
print("页面标题:", driver.title)
# 关闭浏览器
driver.quit()
输出示例
页面标题: 百度一下,你就知道
2.2 查找页面元素
Selenium 提供了多种方式查找页面元素:
- ID:
find_element_by_id
- 类名:
find_element_by_class_name
- CSS选择器:
find_element_by_css_selector
- XPath:
find_element_by_xpath
示例代码
from selenium import webdriver
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
driver.get("https://www.baidu.com")
# 查找搜索框并输入文字
search_box = driver.find_element_by_id("kw")
search_box.send_keys("Python Selenium")
# 点击“百度一下”按钮
search_button = driver.find_element_by_id("su")
search_button.click()
# 打印当前页面 URL
print("当前页面 URL:", driver.current_url)
# 关闭浏览器
driver.quit()
2.3 模拟用户操作
示例代码:自动登录示例
以自动登录 GitHub 为例:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
driver.get("https://github.com/login")
# 输入用户名和密码
driver.find_element(By.ID, "login_field").send_keys("your_username")
driver.find_element(By.ID, "password").send_keys("your_password")
# 点击登录按钮
driver.find_element(By.NAME, "commit").click()
# 等待加载并打印登录结果
time.sleep(2)
print("登录成功" if "dashboard" in driver.current_url else "登录失败")
driver.quit()
三、常用功能示例
3.1 截屏功能
Selenium 可以截取页面截图:
driver.save_screenshot("screenshot.png")
print("截图已保存")
3.2 动态等待
在加载动态页面时,可以使用显式或隐式等待:
隐式等待
driver.implicitly_wait(10) # 等待 10 秒
显式等待
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.ID, "some_id"))
)
3.3 滚动页面
滚动到页面底部:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
3.4 处理弹窗
示例代码:关闭弹窗
alert = driver.switch_to.alert
print("弹窗内容:", alert.text)
alert.accept() # 点击“确定”
3.5 爬取动态网页数据
Selenium 可以用于爬取 JavaScript 动态渲染的内容。例如:
driver.get("https://quotes.toscrape.com/js/")
quotes = driver.find_elements(By.CLASS_NAME, "quote")
for quote in quotes:
print(quote.text)
四、完整示例:自动化搜索并截图
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 设置 WebDriver
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
# 打开百度并搜索
driver.get("https://www.baidu.com")
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Python Selenium 教程")
search_button = driver.find_element(By.ID, "su")
search_button.click()
# 等待加载完成并截图
time.sleep(2)
driver.save_screenshot("search_results.png")
print("搜索结果已截图保存")
# 关闭浏览器
driver.quit()
五、注意事项
- 浏览器版本匹配:确保 WebDriver 与浏览器的版本匹配,否则会报错。
- 反爬策略:很多网站对 Selenium 的行为进行检测,可以通过添加请求头或使用无头模式规避。
- 资源管理:使用完浏览器后务必调用
driver.quit()
释放资源。
六、总结
Selenium
是一个功能强大的工具,在 Web 自动化测试和动态数据抓取中有广泛应用。本文通过代码示例详细讲解了 Selenium 的基本用法及常见功能,希望能帮助你更高效地完成自动化任务。
如果想深入学习 Selenium,可以尝试结合 无头浏览器模式 或 集成 pytest 框架 实现更复杂的应用!