惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
博客园_首页
博客园 - 【当耐特】
量子位
S
SegmentFault 最新的问题
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
Y
Y Combinator Blog
博客园 - 聂微东
The Cloudflare Blog
小众软件
小众软件
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
H
Help Net Security
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Windows 下 Python 使用浏览器自动化工具 Selenium 实现网页...
Yiwei Zhang · 2023-02-07 · via 又见苍岚

Selenium 是一个包含一系列工具和库的网页自动化工程,本文记录使用 Selenium 在 Windows 操作系统 Python 下实现网页自动截图的方法。

简介

Selenium 是一个包含一系列工具和库的网页自动化工程, 它提供了用于模拟用户与浏览器交互的扩展,用于缩放浏览器分配的分发服务器,以及用于实现 W3C WebDriver 规范的基础设施,该规范允许您为所有主要的 Web 浏览器编写可互换的代码。

Selenium 是由志愿者贡献者提供的,他们投入了数千小时的自己的时间,使得源代码免费提供给任何人使用、享受和改进。

Chrome 安装

Python 安装 Selenium

  • 4.8 版本的 Selenium 安装已经十分方便了, pip 直接安装即可
1
pip install selenium 
  • 实现基本截图功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
try:
driver.get("http://www.zywvvd.com")
time.sleep(10) # 延迟10s截图
img_name = time.strftime(
'%Y-%m-%d', time.localtime(time.time())) # 截屏名称 时间表示
img = "%s.png" % os.path.join('.', img_name) # 图片
driver.get_screenshot_as_file(img) # 保存截图
except Exception as e:
print(e)
driver.close() # 关闭浏览器
driver.quit()

  • 截图结果

  • 可以通过 driver.set_window_size(width, height) 修改截图尺寸
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

from selenium import webdriver
import time
import os

driver = webdriver.Chrome()
try:
width = 1920
height = 1080
driver.set_window_size(width, height)
driver.get("http://www.zywvvd.com")

time.sleep(10) # 延迟10s截图
img_name = time.strftime(
'%Y-%m-%d', time.localtime(time.time())) # 截屏名称 时间表示
img = "%s.png" % os.path.join('.', img_name) # 图片

driver.get_screenshot_as_file(img) # 保存截图
except Exception as e:
print(e)
driver.close() # 关闭浏览器
driver.quit()

  • 截图效果

  • 还可以通过 driver.set_page_load_timeout(3) 设置 driver.get 访问的超时时间,超过时间没有成功访问就会抛出异常
1
2
3
4
5
6
7
8
9
10
visitURL = "http://www.google.com"
#限定页面加载时间最大为3秒
driver.set_page_load_timeout(3)
try:
driver.get(visitURL)
except TimeoutException:
print u'页面加载超时!'
#当页面加载时间超过设定时间,通过执行Javascript来停止载,然后继续执行后续操作
driver.execute_script('window.stop()')
time.sleep(2)

参考资料

文章链接:
https://www.zywvvd.com/notes/tools/selenium-screenshot/selenium-screenshot/