JAVA获取HTML网页(插入数据/生成图片的两种方法)

一、将数据插入HTML文件

        <!-- SpringBoot 引用的包 -->        
        <dependency>
            <groupId>ognl</groupId>
            <artifactId>ognl</artifactId>
            <version>3.1.26</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!-- 不用Springboot引用的包 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>3.0.12.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>core-renderer</artifactId>
            <version>R8</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>16</version>
        </dependency>

        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>flying-saucer-core</artifactId>
            <version>9.1.22</version>
        </dependency>

使用 TemplateEngine 引擎,可参考:https://blog.csdn.net/qq_40723785/article/details/133749604

需要注意的点:

  • html文件需要引用 xmlns:th="http://www.thymeleaf.org" 才能注入
  • 由于使用thymeleaf,所有标签都要加上结束标签,或者在标签后缀加 / 
<meta charset="UTF-8" />

二、生成图片的方法1(使用于简单的HTML文件,不能用js)

可参考:Java项目HTML模板文件插入数据后转为图片_java html生成图片_后生仔、的博客-CSDN博客

p.s. 该方法只适用于html基础标签<p><tr>等,且颜色不可写在<header>内,无法生效。需要写在标签中"style"中。

引用包可自行查找,或者根据一

三、生成图片的方法2(利用ChromeDriver插件网页截图)

由于需要生成的图片需要展示图表结构,且HTML基础标签无法做出优雅的图,需要引用js/echarts等工具包,故采取 'chrome' + 'ChromeDriver' + 'selenium' 方法,具体可以参考一下文章,基本都可以实现:

https://www.cnblogs.com/zlnp/p/17104620.html  

(python3爬虫二)Linux安装谷歌浏览器以及对应版本驱动程序_chrome for linux-CSDN博客

以下是安装过程中遇到的问题:

1.'chrome' 与 'ChromeDriver' 版本需一致

查阅网上资料,上述两个需要版本一致,但谷歌浏览器官方并没有找到能下载历史版本,经过查找,可以从一下路径找到自己想要的版本:

windows chrome:https://zhuanlan.zhihu.com/p/339042765/

ChromeDriver:CNPM Binaries Mirror

但如果你想找 Linux 版本的,我找了很久都没找到,请教了公司之前做过类似项目的大佬,找一个90的版本,具体分享在这里了:

链接:https://pan.baidu.com/s/1DCTKJFZ1ICNU4rYOv3rGSw?pwd=dz4t 
提取码:dz4t 

2.报错信息:timeout: Timed out receiving message from renderer: 39.932

网上有很多这个问题的答案,且解决方法是统一的,但对我没有效果。自己查看报错信息,发现是服务器不可以连接外网..所以如果项目是在没有网络的环境,一定要把js的包下到本地,并在html文件中引用。

3.报错信息:unknown error: session deleted because of page crash from tab crashed

网上也有很多这个问题的答案,且解决方法是统一的(挂载),但对我没有效果。自己查看代码后发现,我有一行

options.addArguments("--disable-dev-shm-usage");

相当于我配置了,但是我不用它,所以代码直接注释掉就可以了

4.安装报错:./chromedriver: error while loading shared libraries: libxcb.so.1: cannot open shared object file: No such file or directory

参考:安装 chromedriver 依赖(linux使用selenium时报错)linux Service /usr/local/mine/notify/chromedriver unexpectedly_libxcb.so.1-CSDN博客

切记:安装完 chromedriver 和 chrome 后一定要校验是否安装成功

有帮助的话给个赞呗哈哈哈,搞了好久,感激同事不催之恩

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值