Python Selenium 的安装和教程

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()

五、注意事项

  1. 浏览器版本匹配:确保 WebDriver 与浏览器的版本匹配,否则会报错。
  2. 反爬策略:很多网站对 Selenium 的行为进行检测,可以通过添加请求头或使用无头模式规避。
  3. 资源管理:使用完浏览器后务必调用 driver.quit() 释放资源。

六、总结

Selenium 是一个功能强大的工具,在 Web 自动化测试和动态数据抓取中有广泛应用。本文通过代码示例详细讲解了 Selenium 的基本用法及常见功能,希望能帮助你更高效地完成自动化任务。

如果想深入学习 Selenium,可以尝试结合 无头浏览器模式集成 pytest 框架 实现更复杂的应用!

最后修改于:2024年11月30日 21:25

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日