当前位置 : 主页 > 编程语言 > java >

java selenium+ChromeDriver抓取网页长截图全过程 亲测有效

来源:互联网 收集:自由互联 发布时间:2023-12-28
废话不多说嗷,直接上代码,这个是在借鉴的基础上改的,找不到原版了,所以此处就不@了 首先准备下载工具 chromedriver.exe 此处是一定要跟自己的goole版本对应嗷,我这谷歌版本是最新

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

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

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

java selenium+ChromeDriver抓取网页长截图全过程 亲测有效_chrome

引入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("https://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方法来获取网页的滚动高度效果如下,
  上边代码实现不了下边图片的效果,有需要请留言评论。

java selenium+ChromeDriver抓取网页长截图全过程 亲测有效_java_02

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

        //设置窗口宽高,设置后才能截全
        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();

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

上一篇:带你分析 12306 系统设计
下一篇:没有了
网友评论