linux(centos7)部署springboot项目selenium渲染页面截全页面长图

1. linux(centos7)下载chrome以及chromeDriver

1.1 下载Chrome
下载chrome安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
安装依赖包
yum install -y lsb
 
yum install -y libXScrnSaver
 
yum install -y liberation-fonts 
 
yum install -y libdbusmenu-gtk3
 
yum install epel-release  
安装chrome  
rpm ivh google-chrome-stable_current_x86_64.rpm
1.2 下载ChromeDriver
driver下载网址
https://chromedriver.storage.googleapis.com/index.html
选取chrome对应的chromedrvier版本
google-chrome -version 查看安装的chrome版本
1.3 将Springboot项目部署在LINUX上,以下是重要部分代码
	@GetMapping("/screenShot")
    public String screenShot() throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "/opt/driver/chromedriver");
        ChromeOptions chromeOptions=new ChromeOptions();
        //无头浏览器设置
        chromeOptions.setHeadless(true);
        //关闭chrome沙盒,不关闭会运行不了报错
        chromeOptions.addArguments("--no-sandbox");
        WebDriver webDriver = new ChromeDriver(chromeOptions);
        try {
        	// 如果是linux或mac本地文件 需要在在路径前加file:
            webDriver.get("file:/opt/HTML/1.html");
//            webDriver.get("https://fanyi.baidu.com/");
            Thread.sleep(5000);
            File srcfile = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
            try {
                FileUtils.copyFile(srcfile, new File("/opt/screen/LZJ.jpg"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }finally {
            webDriver.quit();
        }
        return "成功截屏";
    }

访问项目地址,截图成功,以下是效果图
在这里插入图片描述

2.处理linux chrome中文乱码

可以看到中文部分乱码了,解决乱码问题的传送门

3.新的问题:截取整个网页的长图

3.1 推荐两个第三方框架

  1. ashot
  2. chrome-dp

3.2 ashot关键代码

	<dependency>
            <groupId>ru.yandex.qatools.ashot</groupId>
            <artifactId>ashot</artifactId>
            <version>1.5.4</version>
        </dependency>
			// 关键代码部分
			......
			WebDriver webDriver = new ChromeDriver(chromeOptions);
			webDriver.get(url);
			// 设置浏览器可视化窗口大小
            webDriver.manage().window().setSize(new Dimension(1440, 1200));
            Screenshot screenshot= new AShot().shootingStrategy(ShootingStrategies.viewportPasting( 2000 )).takeScreenshot(webDriver);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            ImageIO.write(screenshot.getImage(), "png", stream);
            String encode = Base64.encode(stream.toByteArray());
            .......

3.3 chrome-dp

go的项目,可以用docker部署,大概流程就是你把网页的网址作为请求参数,请求chrome-dp,他就会返回一个网页长图图片地址。或者通过命令行,把网页地址作为命令参数运行,他就会返回图片文件本地地址。(可以看出来,如果用这个chrome-dp,就不需要安装selenium依赖和chrome应用),这个小巧方便。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值