admin管理员组文章数量:1442341
零基础Java使用Playwright获取网站截图教程
前言
最近在搞获取网页截图,因为之前都是使用js来实现特别简单,但是因为halo插件的问题必须要用到java开发,所以浅浅的学习记录一下
Playwright简介
Playwright 是由Microsoft开发的跨浏览器自动化测试工具,支持:
- Chromium/Chrome
- Firefox
- WebKit(Safari)
- 多语言支持(Java/Python/C#/JS)
核心优势:
- 自动等待元素加载
- 网络请求拦截
- 文件下载管理
- 设备模拟功能
最佳实践
我开发环境为JDK17+Spring Webflux+mysql+redis,如下简单介绍如何获取网站截图
如何获取到数据库和redis缓存暂时不讲,我思路如下,以二进制存到数据库后记录url和二进制文件和时间,存入reids二进制文件和url和时间,redis默认6小时过期,6小时后调用从新生成并且更新到redis和数据库
引入maven依赖:
代码语言:javascript代码运行次数:0运行复制<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>1.40.0</version>
</dependency>
浏览器驱动安装
代码语言:javascript代码运行次数:0运行复制// 自动下载所需浏览器
Playwright playwright = Playwright.create();
Browser browser = playwright.chromium().launch();
基础截图示例
代码语言:javascript代码运行次数:0运行复制import com.microsoft.playwright.*;
public class ScreenshotDemo {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
// 访问目标网站
page.navigate(";);
// 等待页面加载完成
page.waitForLoadState(LoadState.NETWORKIDLE);
// 截图保存
page.screenshot(new Page.ScreenshotOptions()
.setPath(Paths.get("screenshot.png"))
.setFullPage(true));
browser.close();
}
}
}
- 使用
Playwright.create()
创建实例进行初始化。 - 通过
chromium().launch()
启动 Chromium 浏览器。 - 调用
newPage()
方法创建新的浏览器标签页。 - 利用
waitForLoadState()
确保页面已完全加载完毕。 - 利用
screenshot()
方法并设置相应的保存路径和截图参数来保存页面截图。
高级参数解释
代码语言:javascript代码运行次数:0运行复制page.screenshot(new Page.ScreenshotOptions()
.setPath(Paths.get("partial.png"))
.setClip(50, 50, 400, 300) // 截取指定区域
.setQuality(85) // JPEG质量
.setOmitBackground(true) // 透明背景
.setType(PNG)); // 文件格式
多浏览器支持
代码语言:javascript代码运行次数:0运行复制// Firefox
Browser firefox = playwright.firefox().launch();
// WebKit
Browser webkit = playwright.webkit().launch(
new BrowserType.LaunchOptions().setHeadless(false));
异步API
代码语言:javascript代码运行次数:0运行复制page.onceLoadFinished(p -> {
p.screenshot(/* options */);
});
page.navigate(";);
扩展学习建议
- 官方文档: /java
- 设备模拟:
page.emulateDevice()
- 网络拦截:
page.route()
- 视频录制:
browserContext.startRecording()
本文标签: 零基础Java使用Playwright获取网站截图教程
版权声明:本文标题:零基础Java使用Playwright获取网站截图教程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1748005079a2789831.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论