python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Selenium自动化

Python使用Selenium实现Web自动化的完整指南

作者:小庄-Python办公

Selenium 是一个强大的开源 Web 自动化工具集,本文将作为一份面向完全新手的系统性指南,带你一步步了解什么是 Selenium,以及如何使用 Python 编写你的第一个 Web 自动化脚本

在当今数字化的世界中,我们每天都要在浏览器中执行大量重复的任务:填写表单、下载报表、抓取数据或是测试网页功能。如果你曾幻想过能有一个“隐形机器人”替你完成这些繁琐的点击和输入,那么 Selenium 就是你的最佳选择。

本文将作为一份面向完全新手的系统性指南,带你一步步了解什么是 Selenium,以及如何使用 Python 编写你的第一个 Web 自动化脚本。

1. 什么是 Selenium?

Selenium 是一个强大的开源 Web 自动化工具集。简单来说,它可以直接控制你的浏览器,模拟真实用户的操作(如点击、输入文本、滚动页面等)。

它最初是为自动化 Web 应用程序测试而诞生的,但由于其强大的浏览器控制能力,现在也被广泛应用于网页数据抓取(爬虫)日常任务自动化

2. 准备工作 (Prerequisites)

在开始编写代码之前,我们需要准备好开发环境。请确保你的电脑上已经安装了以下软件:

安装必备的 Python 库

打开你的终端(Windows 的 CMD/PowerShell,或 Mac/Linux 的 Terminal),运行以下命令来安装 Selenium 和 WebDriver 管理器:

pip install selenium
pip install webdriver-manager

专业提示: webdriver-manager 是一个非常实用的辅助库。它会自动为你下载并配置与你当前 Chrome 浏览器版本匹配的驱动程序(ChromeDriver),让你免去手动下载和配置环境变量的烦恼。

3. 分步指南:编写你的第一个自动化脚本

我们将编写一个简单的脚本:自动打开浏览器,进入百度首页,搜索“Selenium 自动化”,并点击搜索按钮。

第一步:导入必要的模块

在你的代码编辑器中创建一个名为 auto_search.py 的文件,并输入以下代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

第二步:初始化浏览器并打开网页

接下来,我们需要启动 Chrome 浏览器并告诉它去哪个网址。

# 使用 webdriver_manager 自动配置驱动
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

# 让浏览器全屏运行(可选)
driver.maximize_window()

# 打开百度首页
driver.get("https://www.baidu.com")

第三步:定位网页元素

为了让 Selenium 知道在哪里输入文字,我们需要“定位”那个输入框。在 Web 开发中,每个元素都有自己的 HTML 标签和属性。
百度的搜索输入框的 HTML id 属性是 kw,搜索按钮的 idsu

# 找到搜索输入框
search_box = driver.find_element(By.ID, "kw")

# 找到“百度一下”按钮
search_button = driver.find_element(By.ID, "su")

第四步:与元素进行交互

找到元素后,我们就可以模拟人类的行为了。

# 在输入框中输入文字
search_box.send_keys("Selenium 自动化")

# 等待1秒钟,以便我们能看清操作(实际开发中建议使用显式等待)
time.sleep(1)

# 点击搜索按钮
search_button.click()

# 保持结果页面打开 5 秒钟,然后关闭
time.sleep(5)

第五步:关闭浏览器

任务完成后,务必养成关闭浏览器并释放系统资源的好习惯。

# 退出浏览器并结束 WebDriver 进程
driver.quit()

完整代码示例

将上面的步骤组合起来,你的完整代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

def main():
    print("正在启动浏览器...")
    service = Service(ChromeDriverManager().install())
    driver = webdriver.Chrome(service=service)
    driver.maximize_window()

    try:
        print("正在打开百度...")
        driver.get("https://www.baidu.com")
        
        print("正在定位元素并搜索...")
        search_box = driver.find_element(By.ID, "kw")
        search_button = driver.find_element(By.ID, "su")
        
        search_box.send_keys("Selenium 自动化")
        time.sleep(1)
        search_button.click()
        
        print("搜索成功!等待 5 秒后关闭浏览器...")
        time.sleep(5)
        
    finally:
        driver.quit()
        print("浏览器已关闭。")

if __name__ == "__main__":
    main()

运行这个脚本,你就可以把双手离开键盘,看着电脑自动完成搜索了!

4. 常见陷阱与注意事项 (Common Pitfalls)

对于初学者来说,使用 Selenium 时最容易遇到以下几个坑:

1. 页面还没加载完就去寻找元素 (ElementNotVisibleException)

问题: 代码运行速度远快于网页加载速度。如果网页还没渲染出按钮,代码就去点击,就会报错。

解决方案: 避免使用死板的 time.sleep()。学习使用 显式等待 (Explicit Waits)。例如:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最多等待 10 秒,直到 ID 为 'su' 的元素可被点击
button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "su"))
)

2. 浏览器版本与驱动不匹配

3. 元素嵌套在 iframe 中

5. 总结与学习资源

恭喜你!你已经成功编写并运行了你的第一个 Selenium Web 自动化脚本。我们学习了如何配置环境、打开网页、定位元素(通过 ID)以及模拟键盘输入和鼠标点击。

自动化是一个深不见底但也充满乐趣的领域。为了进一步提升你的技能,建议你探索以下主题:

以上就是Python使用Selenium实现Web自动化的完整指南的详细内容,更多关于Python Selenium自动化的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文