Web 自动化指南:如何用 Python 和 Selenium 解放双手

目录

专栏导读

🌸 欢迎来到Python办公自动化专栏---Python处理办公问题,解放您的双手
🏳️‍🌈 个人博客主页:请点击------> 个人的博客主页 求收藏
🏳️‍🌈 Github主页:请点击------> Github主页 求Star⭐
🏳️‍🌈 知乎主页:请点击------> 知乎主页 求关注
🏳️‍🌈 CSDN博客主页:请点击------> CSDN的博客主页 求关注
👍 该系列文章专栏:请点击------>Python办公自动化专栏 求订阅
🕷 此外还有爬虫专栏:请点击------>Python爬虫基础专栏 求订阅
📕 此外还有python基础专栏:请点击------>Python基础学习专栏 求订阅
文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
❤️ 欢迎各位佬关注! ❤️

从零开始的 Web 自动化指南:如何用 Python 和 Selenium 解放双手

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

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


1. 什么是 Selenium?

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

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


2. 准备工作 (Prerequisites)

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

  • Python: 建议安装 Python 3.7 或更高版本。
  • Google Chrome 浏览器: 本文将以 Chrome 为例进行演示。
  • 代码编辑器: 如 VS Code、PyCharm 或简单的 IDLE。

安装必备的 Python 库

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

bash 复制代码
pip install selenium
pip install webdriver-manager

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


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

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

第一步:导入必要的模块

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

python 复制代码
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 浏览器并告诉它去哪个网址。

python 复制代码
# 使用 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

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

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

第四步:与元素进行交互

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

python 复制代码
# 在输入框中输入文字
search_box.send_keys("Selenium 自动化")

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

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

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

第五步:关闭浏览器

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

python 复制代码
# 退出浏览器并结束 WebDriver 进程
driver.quit()

完整代码示例

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

python 复制代码
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)。例如:
    python 复制代码
    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. 浏览器版本与驱动不匹配

    • 问题: Chrome 浏览器经常自动更新,导致旧版的 ChromeDriver 失效。
    • 解决方案: 就像我们在教程中做的那样,始终使用 webdriver-manager 库,它会在每次运行时自动检查并匹配版本。
  • 3. 元素嵌套在 iframe 中

    • 问题: 有时候你明明看到了元素,代码却找不到它。这可能是因为该元素在一个嵌入的子网页(iframe)里。
    • 解决方案: 需要先让 WebDriver 切换到该 iframe,例如:driver.switch_to.frame("iframe_name")

5. 总结与学习资源

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

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

  • 学习更多定位元素的方法(如 XPathCSS Selectors)。
  • 学习如何处理弹窗(Alerts)和下拉菜单(Select)。
  • 学习如何实现无头模式(Headless Mode),让浏览器在后台静默运行以提高速度。

推荐学习资源:

现在,去寻找你日常工作中的重复性任务,用 Selenium 把它自动化吧!

结尾

希望对初学者有帮助;致力于办公自动化的小小程序员一枚
希望能得到大家的【❤️一个免费关注❤️】感谢!
求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍
此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏
此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏
此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏
相关推荐
云浪2 小时前
认识 Service Worker
前端·javascript
问水っ2 小时前
Qt Creator快速入门 第三版 第7章 Qt对象模型与容器类
开发语言·qt
AmyLin_20012 小时前
【pdf2md-1:开篇】高保真PDF转MarkDown附源码(标题/表格/图片全还原)
python·pdf·github·sdk·pdf2md·文档工具
方也_arkling2 小时前
【Vue-Day11】props的使用
前端·javascript·vue.js
zhangren024682 小时前
Laravel6.x核心特性全解析
开发语言·c++·php
菜鸟中的拖拉机2 小时前
Python之conda创建虚拟环境
开发语言·python·conda
格林威2 小时前
Baumer相机芯片引脚共面性检测:保障电子装配精度的 5 个实用方案,附 OpenCV+Halcon 实战代码!
开发语言·人工智能·opencv·计算机视觉·c#·视觉检测·工业相机
心之语歌2 小时前
前端刷新处理数据的几种方式
前端
呱牛do it2 小时前
企业级软件研发团队绩效考核系统开发(持续更新 Day 7)
python·fastapi·研发管理