【JAVA】【获取vue页面】什么?不支持vue页面的内容获取?支持的来了,还不需要额外安装浏览器!

简介: 【JAVA】【获取vue页面】什么?不支持vue页面的内容获取?支持的来了,还不需要额外安装浏览器!

一、前言


  最近,一个网友问,怎么想做个数据调查报告,都被页面加载403、页面内容加载不到、vue页面劝退。什么?这点小事还解决不了?vue页面不支持?我立马甩了这篇代码给他!vue页面


微信截图_20220519182452.png


403页面

微信截图_20220519182502.png


二、代码分析


没改代码前的代码(获取不到vue页面和403页面)


public static void main(String[] args) {
    // 这里举例找了个vue页面(小牛翻译)的来测试
    String nowHtml = "https://www.niutrans.com";
    URL url;
    try {
      url = new URL(nowHtml);
      URLConnection openConnection = url.openConnection();
      InputStream inputStream = openConnection.getInputStream();
      byte[] b = new byte[1024];
      int len;
      while ((len = inputStream.read(b)) != -1) {
        System.out.println(new String(b, 0, len));
      }
      inputStream.close();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }


改动后的代码需要的依赖


<!-- 获取页面内容依赖 -->
    <dependency>
      <groupId>net.sourceforge.htmlunit</groupId>
      <artifactId>htmlunit</artifactId>
      <version>2.43.0</version>
    </dependency>


改动后的代码


public static void main(String[] args) {
    // 这里举例找了个vue页面(小牛翻译、b站页面)的来测试
    String nowHtml = "https://www.niutrans.com";
//    String nowHtml = "https://www.bilibili.com";
    getWebBody(nowHtml);
  }
  public static void getWebBody(String nowHtml) {
    WebClient webClient = new WebClient(BrowserVersion.CHROME);
    webClient.getOptions().setActiveXNative(false);// 不启用ActiveX
    webClient.getOptions().setCssEnabled(false);// 是否启用CSS,因为不需要展现页面,所以不需要启用
    webClient.getOptions().setUseInsecureSSL(true); // 设置为true,客户机将接受与任何主机的连接,而不管它们是否有有效证书
    webClient.getOptions().setJavaScriptEnabled(true); // 很重要,启用JS
    webClient.getOptions().setDownloadImages(false);// 不下载图片
    webClient.getOptions().setThrowExceptionOnScriptError(false);// 当JS执行出错的时候是否抛出异常,这里选择不需要
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);// 当HTTP的状态非200时是否抛出异常,这里选择不需要
    webClient.getOptions().setTimeout(15 * 1000); // 等待15s
    webClient.getOptions().setConnectionTimeToLive(15 * 1000);
    webClient.waitForBackgroundJavaScript(10 * 1000);// 异步JS执行需要耗时,所以这里线程要阻塞30秒,等待异步JS执行结束
    HtmlPage page = null;
    try {
      page = webClient.getPage(nowHtml);// 加载网页
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      webClient.close();
    }
    String htmlStr = page.getBody().asXml();
    System.out.println(htmlStr);
  }


结果展示


微信截图_20220519182516.png


三、结论


  在页面请求中,会存在http(s)证书是否有效问题,也会存在重定向(403)页面,并且还有存在页面是靠js动态渲染的(vue页面)。因此,在获取页面内容中,我们需要考虑的诸多问题。

  HtmlUnit都解决了这些问题,并且不需要像其他工具类那样,需要再配合浏览器,安装一个浏览器装置等等。总得来说,HtmlUnit功能很全,使用起来也很方便!


【最后】


  感谢你看到最后,如果你持有不同的看法,欢迎你在文章下方进行留言、评论。

我是南方者,一个热爱计算机更热爱祖国的南方人。


文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。

目录
相关文章
|
5天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
142 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
8天前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
53 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
8天前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
55 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
7天前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
44 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
11天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
55 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
2天前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
27 12
|
24天前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
55 6
|
27天前
|
JavaScript 安全 API
iframe嵌入页面实现免登录思路(以vue为例)
通过上述步骤,可以在Vue.js项目中通过 `iframe`实现不同应用间的免登录功能。利用Token传递和消息传递机制,可以确保安全、高效地在主应用和子应用间共享登录状态。这种方法在实际项目中具有广泛的应用前景,能够显著提升用户体验。
54 8
|
28天前
|
资源调度 JavaScript 前端开发
创建vue3项目步骤以及安装第三方插件步骤【保姆级教程】
这是一篇关于创建Vue项目的详细指南,涵盖从环境搭建到项目部署的全过程。
133 1
|
1月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。

热门文章

最新文章