admin管理员组

文章数量:1033139

零基础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(); 
        }
    }
}
  1. 使用 Playwright.create() 创建实例进行初始化。
  2. 通过 chromium().launch() 启动 Chromium 浏览器。
  3. 调用 newPage() 方法创建新的浏览器标签页。
  4. 利用 waitForLoadState() 确保页面已完全加载完毕。
  5. 利用 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(";); 

扩展学习建议

  1. 官方文档: /java
  2. 设备模拟: page.emulateDevice()
  3. 网络拦截: page.route()
  4. 视频录制: browserContext.startRecording()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-02-10,如有侵权请联系 cloudcommunity@tencent 删除基础教程java网站playwright

零基础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(); 
        }
    }
}
  1. 使用 Playwright.create() 创建实例进行初始化。
  2. 通过 chromium().launch() 启动 Chromium 浏览器。
  3. 调用 newPage() 方法创建新的浏览器标签页。
  4. 利用 waitForLoadState() 确保页面已完全加载完毕。
  5. 利用 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(";); 

扩展学习建议

  1. 官方文档: /java
  2. 设备模拟: page.emulateDevice()
  3. 网络拦截: page.route()
  4. 视频录制: browserContext.startRecording()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-02-10,如有侵权请联系 cloudcommunity@tencent 删除基础教程java网站playwright

本文标签: 零基础Java使用Playwright获取网站截图教程