如何使用Java Selenium ChromeDriver实现网页长截图抓取?

2026-04-10 10:021阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计744个文字,预计阅读时间需要3分钟。

如何使用Java Selenium ChromeDriver实现网页长截图抓取?

废话不多说,直接上代码。这是在借用基础上修改的,找不到原版了,所以此处不@了。首先准备下载工具+chromedriver.exe,此处一定要跟自己的google版本对应,我这里的谷歌版本是最新的。

废话不多说嗷,直接上代码,这个是在借鉴的基础上改的,找不到原版了,所以此处就不@了

如何使用Java Selenium ChromeDriver实现网页长截图抓取?

首先准备下载工具chromedriver.exe此处是一定要跟自己的goole版本对应嗷,我这谷歌版本是最新的,所以下载是118版本的

chromedriver.exe 大概就是下面这个东西

引入maven依赖:

<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>27.0-jre</version> </dependency>

下边就开始贴代码:

第一步一定要成功,不然后续你没法测试效果,我在这就卡了一会。

System.setProperty("webdriver.chrome.driver", "d:\\chromedriver-win64\\chromedriver.exe"); //下边这一步一定要成功,不然很无厘头,其实主要就是版本的问题 ChromeDriver driver = new ChromeDriver(options);

第二部设置ChromeOptions 放入到第一步的ChromeDriver中

ChromeOptions options = new ChromeOptions(); //ssl证书支持 options.setCapability("acceptSslCerts", true); //截屏支持 options.setCapability("takesScreenshot", true); //css搜索支持 options.setCapability("cssSelectorsEnabled", true); //设置浏览器参数 options.addArguments("--headless"); options.addArguments("--no-sandbox"); options.addArguments("--disable-gpu"); options.addArguments("--disable-dev-shm-usage"); options.setHeadless(true);

第三步开始设置超时以及获取网页URL部分了

//设置超时,避免有些内容加载过慢导致截不到图 driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.MINUTES); driver.manage().timeouts().implicitlyWait(1, TimeUnit.MINUTES); driver.manage().timeouts().setScriptTimeout(1, TimeUnit.MINUTES); driver.get("www.gov.cn");

第四步获取网页宽度,这里我这个方法不太好用所以我把宽度设置成固定宽度 1920

int maxWidth = 1920; //获取页面高度这块是有点小难度,需要有点前端经验,此处不清楚可以评论留言 long pageHeight =(long)jsExecutor.executeScript("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight );") //此处获取的基本是网页当前高度,这边写了一个适配各种网页的js方法来获取网页的滚动高度效果如下, 上边代码实现不了下边图片的效果,有需要请留言评论。

第五步设置窗口高度进行截图处理

//设置窗口宽高,设置后才能截全 driver.manage().window().setSize(new Dimension(maxWidth, Integer.parseInt(pageHeight+""))); // 创建长截图 File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenshotFile, new File("D:/html.png"));

第六步关闭浏览器即可

driver.quit();

以上就是获取网页长截图的方法,亲测有效。欢迎咨询!感谢各位留言点赞。

本文共计744个文字,预计阅读时间需要3分钟。

如何使用Java Selenium ChromeDriver实现网页长截图抓取?

废话不多说,直接上代码。这是在借用基础上修改的,找不到原版了,所以此处不@了。首先准备下载工具+chromedriver.exe,此处一定要跟自己的google版本对应,我这里的谷歌版本是最新的。

废话不多说嗷,直接上代码,这个是在借鉴的基础上改的,找不到原版了,所以此处就不@了

如何使用Java Selenium ChromeDriver实现网页长截图抓取?

首先准备下载工具chromedriver.exe此处是一定要跟自己的goole版本对应嗷,我这谷歌版本是最新的,所以下载是118版本的

chromedriver.exe 大概就是下面这个东西

引入maven依赖:

<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>27.0-jre</version> </dependency>

下边就开始贴代码:

第一步一定要成功,不然后续你没法测试效果,我在这就卡了一会。

System.setProperty("webdriver.chrome.driver", "d:\\chromedriver-win64\\chromedriver.exe"); //下边这一步一定要成功,不然很无厘头,其实主要就是版本的问题 ChromeDriver driver = new ChromeDriver(options);

第二部设置ChromeOptions 放入到第一步的ChromeDriver中

ChromeOptions options = new ChromeOptions(); //ssl证书支持 options.setCapability("acceptSslCerts", true); //截屏支持 options.setCapability("takesScreenshot", true); //css搜索支持 options.setCapability("cssSelectorsEnabled", true); //设置浏览器参数 options.addArguments("--headless"); options.addArguments("--no-sandbox"); options.addArguments("--disable-gpu"); options.addArguments("--disable-dev-shm-usage"); options.setHeadless(true);

第三步开始设置超时以及获取网页URL部分了

//设置超时,避免有些内容加载过慢导致截不到图 driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.MINUTES); driver.manage().timeouts().implicitlyWait(1, TimeUnit.MINUTES); driver.manage().timeouts().setScriptTimeout(1, TimeUnit.MINUTES); driver.get("www.gov.cn");

第四步获取网页宽度,这里我这个方法不太好用所以我把宽度设置成固定宽度 1920

int maxWidth = 1920; //获取页面高度这块是有点小难度,需要有点前端经验,此处不清楚可以评论留言 long pageHeight =(long)jsExecutor.executeScript("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight );") //此处获取的基本是网页当前高度,这边写了一个适配各种网页的js方法来获取网页的滚动高度效果如下, 上边代码实现不了下边图片的效果,有需要请留言评论。

第五步设置窗口高度进行截图处理

//设置窗口宽高,设置后才能截全 driver.manage().window().setSize(new Dimension(maxWidth, Integer.parseInt(pageHeight+""))); // 创建长截图 File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenshotFile, new File("D:/html.png"));

第六步关闭浏览器即可

driver.quit();

以上就是获取网页长截图的方法,亲测有效。欢迎咨询!感谢各位留言点赞。