news 2026/6/11 11:46:57

Selenium 自动化截取网页指定区域

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Selenium 自动化截取网页指定区域

一. 需求

在本篇博客中,我将分享一段使用Python编写的自动化网页截图代码,该代码基于Selenium和PIL库,可用于截取网页中指定区域的截图。这样的功能对于需要定期监控特定网页内容或进行网页数据采集的任务非常有用。

二. 代码解析

首先,我们使用Selenium库启动了一个Chrome浏览器,并通过设置选项隐藏了浏览器自动化控制提示。代码还实现了全屏效果,类似于按下F11键。

  1. import time

  2. from selenium import webdriver

  3. from PIL import Image

  4. # 启动浏览器

  5. chrome_options = webdriver.ChromeOptions()

  6. # 隐藏浏览器自动化控制提示

  7. chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

  8. # 添加谷歌浏览器驱动位置

  9. # chrome_options.binary_location = r"E:\应用\谷歌浏览器插件\chrome-win64\chrome.exe"

  10. # 加载启动项页面全屏效果,相当于F11。

  11. chrome_options.add_argument("--kiosk")

  12. # 配置初始化

  13. driver = webdriver.Chrome(options=chrome_options)

然后,我们打开了指定的网页,并获取了页面的宽度和高度。

  1. # 打开页面

  2. url = 'https://baidu.com'# 请替换为你要打开的页面

  3. driver.get(url)

  4. # 获取页面宽度与高度

  5. hight,width = 'return document.body.clientHeight','return document.body.clientWidth'

  6. h,w = driver.execute_script(hight),driver.execute_script(width)

  7. print(w,h)

接下来,我们指定了要截取的区域的坐标,并使用Selenium的save_screenshot方法保存整个页面的截图。

  1. # 指定四个点的坐标,这里以左上角和右下角的坐标为例

  2. # x1起始宽度到 x2最大宽度的距离

  3. # y1起始高度到 y2最大高度的距离

  4. x1, y1 = 0, 0# 左上角坐标

  5. x2, y2 = w, h-600# 右下角坐标

  6. # 获取整个页面截图

  7. screenshot_path = 'screenshot.png'

  8. driver.save_screenshot(screenshot_path)

随后,我们使用PIL库打开整个页面的截图,并通过crop方法截取指定区域。最后,保存截取的区域截图及关闭浏览器

  1. # 截取指定区域

  2. im = Image.open(screenshot_path)

  3. region = im.crop((x1, y1, x2, y2))

  4. # 保存截图

  5. cropped_path = 'result_screenshot.png'

  6. region.save(cropped_path)

  7. # 关闭浏览器

  8. driver.close()

三. 完整代码

将代码中的网页链接和截取区域坐标调整为你想要的值。

运行代码,即可生成指定区域的网页截图。

  1. import time

  2. from selenium import webdriver

  3. from PIL import Image

  4. # 启动浏览器

  5. # 隐藏浏览器自动化控制提示

  6. chrome_options = webdriver.ChromeOptions()

  7. chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])

  8. # 添加谷歌浏览器驱动位置

  9. # chrome_options.binary_location = r"E:\应用\谷歌浏览器插件\chrome-win64\chrome.exe"

  10. # 加载启动项页面全屏效果,相当于F11。

  11. chrome_options.add_argument("--kiosk")

  12. # 配置初始化

  13. driver = webdriver.Chrome(options=chrome_options)

  14. # 打开页面

  15. url = 'https://baidu.com'# 请替换为你要打开的页面

  16. driver.get(url)

  17. # 获取页面宽度与高度

  18. hight,width = 'return document.body.clientHeight','return document.body.clientWidth'

  19. h,w = driver.execute_script(hight),driver.execute_script(width)

  20. print(w,h)

  21. # 指定四个点的坐标,这里以左上角和右下角的坐标为例

  22. # x1起始宽度到 x2最大宽度的距离

  23. # y1起始高度到 y2最大高度的距离

  24. x1, y1 = 0, 0# 左上角坐标

  25. x2, y2 = w, h-600# 右下角坐标

  26. # 获取整个页面截图

  27. screenshot_path = 'screenshot.png'

  28. driver.save_screenshot(screenshot_path)

  29. time.sleep(3)

  30. # 截取指定区域

  31. im = Image.open(screenshot_path)

  32. region = im.crop((x1, y1, x2, y2))

  33. # 保存截图

  34. cropped_path = 'result_screenshot.png'

  35. region.save(cropped_path)

  36. # 关闭浏览器

  37. driver.close()

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 16:18:46

Flutter本地通知终极指南:从零开始的完整实现教程

在移动应用开发中,本地通知是提升用户体验的关键功能。想象一下,你的应用能够在用户离线时提醒重要事件,或者定时发送生日祝福——这一切都离不开本地通知的强大支持。 【免费下载链接】flutter-examples [Examples] Simple basic isolated a…

作者头像 李华
网站建设 2026/6/10 13:31:08

31、Python GUI 开发:从基础到实战

Python GUI 开发:从基础到实战 1. Python 进程处理与守护进程示例 在 Python 中处理进程时,其表现得非常成熟和强大。Python 具备优雅且复杂的线程 API,但需要时刻留意全局解释器锁(GIL)。若程序是 I/O 密集型,GIL 通常不会造成问题;但如果需要使用多个处理器,那么使…

作者头像 李华
网站建设 2026/6/10 17:23:55

34、Python 数据持久化:从简单到关系型序列化的全面解析

Python 数据持久化:从简单到关系型序列化的全面解析 在 Python 编程中,数据持久化是一个重要的话题。它允许我们将程序中的数据保存到磁盘,以便在后续使用。本文将介绍几种不同的数据持久化方法,包括简单序列化和关系型序列化,帮助你了解它们的特点、使用方法以及适用场景…

作者头像 李华
网站建设 2026/6/10 1:08:45

12、树莓派传感器数据处理与物联网应用实践

树莓派传感器数据处理与物联网应用实践 1. 使用传感器站制作温度记录器 在掌握了通过SPI线从MCP3008读取ADC值的技巧后,我们可以将传感器与MCP3008的通道0进行连接。此时,传感器站最多能同时连接八个传感器。为简化实验,我们选择将温度传感器与传感器站板连接。假设树莓派…

作者头像 李华
网站建设 2026/6/11 4:36:20

Dexed完整指南:快速掌握经典FM合成器的最佳实践

Dexed完整指南:快速掌握经典FM合成器的最佳实践 【免费下载链接】dexed DX7 FM multi plaform/multi format plugin 项目地址: https://gitcode.com/gh_mirrors/de/dexed 你是否曾经被Yamaha DX7那独特的FM合成音色所吸引,却苦于找不到合适的现代…

作者头像 李华
网站建设 2026/6/10 14:41:57

计算机视觉多视图几何完整学习指南:从理论到实践的终极资源

计算机视觉多视图几何完整学习指南:从理论到实践的终极资源 【免费下载链接】计算机视觉中的多视图几何PDF下载分享 计算机视觉中的多视图几何 PDF 下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/0155a 想要深入掌握计算机视觉中的…

作者头像 李华