首页 > 其他分享 >使用chromedriver抓取网页截图

使用chromedriver抓取网页截图

时间:2024-11-07 16:31:44浏览次数:4  
标签:heightIndex 截图 driver 抓取 long chromedriver import document

前提:

1、电脑安装了谷歌浏览器

2、下载chromedriver-win64,放到C:\Program Files\Google\Chrome\chromedriver-win64   安装路径

chromedriver-win64  下载地址:Chrome for Testing availability

3、

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws InterruptedException, IOException {
        WebDriver driver = null;
        try{
            System.setProperty("webdriver.chrome.driver", "C:\\Program Files\\Google\\Chrome\\chromedriver-win64\\chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless"); // 无界面模式
            options.addArguments("--hide-scrollbars"); // 隐藏滚动条(可选)
            options.addArguments("--force-device-scale-factor=2"); // 设置缩放因子为 2,提高清晰度

            driver = new ChromeDriver(options);
            driver.get("https://www.baidu.com/"); // 替换为你想截图的网页
            Thread.sleep(20000);
            File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
            File imageFile = new File("D:\\笔记\\test.png");
            FileUtils.copyFile(screenshot, imageFile); // 保存截图
        }finally {
            if(driver != null){
                driver.quit();
            }
        }
    }
}

  效果图(会看到看到明显截图是不全的。)是因为设置了缩放因子,提高清晰度导致的

 

如何处理这种情况呢。

A、添加一个模拟滚动调整

 /**
     * 模拟滚动条
     * @param driver
     * @throws InterruptedException
     */
    public static void analogScrollBar(WebDriver driver) throws InterruptedException {
        // 模拟滚动条,解决懒加载问题
        String jsHeight = "return document.body.clientHeight";
        long heightIndex = (long) ((JavascriptExecutor) driver).executeScript(jsHeight);
        long k = 1;
        // 模拟手动滚动条
        while (k * 500 < heightIndex) {
            String jsMove = "window.scrollTo(0, " + (k * 500) + ")";
            System.out.println(jsMove);
            ((JavascriptExecutor) driver).executeScript(jsMove);
            Thread.sleep(200);
            heightIndex = (long) ((JavascriptExecutor) driver).executeScript(jsHeight);
            k++;
        }
        // 获取网页的宽度和高度
        String jsWidth = "return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);";
        String jsHeightFull = "return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);";
        long widthIndex = (long) ((JavascriptExecutor) driver).executeScript(jsWidth);
        heightIndex = (long) ((JavascriptExecutor) driver).executeScript(jsHeightFull);

        System.out.println("Width: " + widthIndex + ", Height: " + heightIndex);

        // 设置浏览器窗口大小
        driver.manage().window().setSize(new Dimension((int) widthIndex + 100, (int) heightIndex + 500));
    }

 

效果图:

 

 B、去掉缩放因子(A方式比较,这样截出来的图片会更加清晰)

 

标签:heightIndex,截图,driver,抓取,long,chromedriver,import,document
From: https://www.cnblogs.com/wwssgg/p/18533076

相关文章

  • Python 爬取大量数据如何并发抓取与性能优化
    Python并发抓取与性能优化在进行网络爬虫开发时,爬取大量数据可能非常耗时。尤其是在处理许多网页或API请求时,逐个请求速度会非常慢。为了解决这个问题,我们可以通过并发抓取提高爬取效率。同时,通过性能优化来进一步减少耗时和资源占用,使爬虫更高效。本篇文章将带大家了解......
  • Python 使用 Selenium 如何抓取动态网页
    Python动态网页抓取:基础教程在如今的网络中,许多网站是“动态”的,即网页内容不是静态的HTML文件,而是由JavaScript动态生成的。这种动态网页在数据抓取中带来了一些挑战,因为传统的HTML抓取方法无法抓取JavaScript生成的内容。在本教程中,我们将详细介绍如何使用Pyth......
  • 同事推荐的几个高级爬虫工具,抓取网页非常快~
    在当今数据驱动的时代,自动化爬虫工具和软件成为了许多企业和个人获取数据的重要手段,特别是跨境电商、外贸等业务,对数据的需求非常大,比如对amazon、tiktok、shopee等网站数据的监测和获取。这里会介绍6款功能强大、操作简便的自动化爬虫工具,用好了可以更高效地进行数据采集,非常......
  • SDK数据采集:一种抓取精准用户数据并进行分析的有效方式
    SDK软件开发工具包(SDK)数据采集在现代移动应用开发中扮演着至关重要的角色。它不仅可以帮助开发者更好地理解用户行为,还能为产品优化、市场定位和精准营销提供强有力的数据支撑。下面,我们将深入了解SDK数据采集的概念、原理,并通过实例来展示它的应用和意义。集成SDK以采集用户......
  • 安装LaTeX-OCR截图识别转换成LaTeX-Markdown格式
    安装LaTeX-OCR在虚拟环境中,通过pip命令安装LaTeX-OCR。以下是一个示例命令:pipinstallpix2tex[gui]注意:如果你在中国大陆地区,由于网络原因,可能需要设置临时代理或使用国内的镜像源来加速下载。使用LaTeX-OCR命令行使用安装完成后,你可以在命令行中直接使用LaTeX-OCR。首先,你......
  • CleanShot X - Mac(苹果电脑)专业截图录屏软件
    CleanShotX不仅提供了基础的截图功能,更内置了强大的图片编辑器,让你能轻松添加标注、形状、文本……以及将多个截图进行合并。 无论是为社交媒体制作图文,还是制作专业的产品/教程演示,CleanShotX都能满足你的需求。软件支持多样化的截图模式,包括:区域、窗口、全屏、......
  • Python+Django框架淘宝茶叶销售数据可视化系统网站作品截图和开题报告参考
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • 截图工具 for Linux --- 你用过吗?
    截图工具forLinuxLinux系统在桌面、嵌入式、服务器等多领域的广泛应用,催生了各种需求的截图工具。从简单的命令行工具到复杂的图形化应用,Linux的截图工具逐渐发展并适应了不同的图形后端架构,如X11和Wayland。本篇将从这两大后端的视角出发,介绍Linux截图工具的种类、功能......
  • B站-Bilibili-评论抓取和分析
    随着互联网的发展,社交媒体平台成为了人们分享观点、互动交流的重要场所。Bilibili作为国内领先的视频分享平台之一,其评论区的内容丰富多彩,蕴含着大量有价值的信息。然而,如何高效地收集这些信息,并对其进行结构化分析,成为了一个值得探讨的问题。本文将详细介绍一个名为“Bilibili......
  • Python+Django框架淘宝家用电器销售数据可视化系统作品截图和开题报告参考
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......