【高效开发工具系列】Java读取Html

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.基础介绍
      • 1.需求说明
      • 2.Jsoup 简介
      • 3.Jsoup 的功能
    • 二.基本使用
      • 1. 添加依赖
      • 2. 使用 Jsoup 解析 HTML 文档
      • 3.直接传入 html
      • 4.直接传入 URL

一.基础介绍

1.需求说明

有许多情况下,你可能需要使用 Java 解析 HTML。以下是一些常见的情况:

  1. 网页数据提取: 当你需要从网页中提取特定数据时,例如爬取网页内容并提取标题、链接、表格数据等。HTML 解析是必要的,因为它使你能够以结构化的方式访问和提取所需的信息。

  2. 数据清理和转换: 如果你有一些包含 HTML 标记的文本数据,你可能希望将其清理并转换为纯文本或其他格式。HTML 解析器可以帮助你处理这些标记,提取文本内容。

  3. Web 抓取和爬虫: 在开发 Web 爬虫或抓取工具时,HTML 解析是关键的。你需要解析从网页获取的 HTML 内容,从中提取有用的信息,并进行进一步的处理和存储。

  4. 数据分析: 在进行 Web 数据分析时,你可能需要解析和处理大量的 HTML 数据。这可能涉及从多个网页中提取数据,进行统计分析或生成报告。

  5. 屏幕抓取和自动化: 在自动化测试或屏幕抓取的情境中,你可能需要解析 HTML 来检查页面上的元素、属性或文本。

  6. Web 应用程序开发: 在开发 Web 应用程序时,可能需要从 HTML 表单中提取用户输入,处理提交的数据,或者在服务器端生成动态的 HTML 内容。

在这些情况下,使用 Java 中的 HTML 解析库(如 Jsoup)可以使你更方便地处理和操作 HTML 文档,从而实现你的需求。

2.Jsoup 简介

这个包是 Jsoup,是一个用于解析 HTML 文档的 Java 库。它提供了一种方便的方式来从 HTML 中提取和操作数据。

3.Jsoup 的功能

下面是一些 Jsoup 的主要功能以及一个简单的使用示例:

  1. HTML 解析: Jsoup 能够解析 HTML 文档,构建一个 Document 对象,便于进一步操作。

  2. 元素选择器: 提供类似于 CSS 选择器的语法,方便选择 HTML 文档中的特定元素。

  3. DOM 操作: 允许你在 HTML 文档中添加、修改或删除元素。

  4. 属性获取: 能够获取 HTML 元素的属性值。

  5. HTML 输出: 可以将 Document 对象输出为 HTML 字符串。

二.基本使用

1. 添加依赖

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.8.3</version>
</dependency>

2. 使用 Jsoup 解析 HTML 文档

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;public class JsoupExample {public static void main(String[] args) {try {// 从URL加载HTML文档Document document = Jsoup.connect("http://example.com").get();// 通过CSS选择器选择所有h1元素Elements headings = document.select("h1");// 输出所有h1元素的文本内容for (Element heading : headings) {System.out.println("Heading: " + heading.text());}} catch (Exception e) {e.printStackTrace();}}
}

上述示例演示了从 URL 加载 HTML 文档,使用 CSS 选择器选择所有 h1 元素,并输出它们的文本内容。你可以根据具体需求进一步操作文档的元素,进行数据提取或修改。请注意,需要处理异常,因为 Jsoup 的方法可能会抛出 IOException 等异常。

3.直接传入 html

@SpringBootTest
@AutoConfigureMockMvc
public class HtmlTest {@Testpublic void testHelloEndpoint() throws Exception {// 获取html的文档对象Document doc = Jsoup.parse("<html><body><h1>Hello, world!</h1></body></html>");// 获取页面下id="content"的标签Element content = doc.getElementById("answer_54474042");// 获取页面下的a标签Elements answersMoney = content.getElementsByClass("Answers_Money");final String text = answersMoney.text();System.out.println(text);// 定义正则表达式,匹配小数部分String regex = "\\d+\\.\\d+";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(text);// 查找匹配的部分if (matcher.find()) {String result = matcher.group();System.out.println("提取到的数字为: " + result);} else {System.out.println("未找到匹配的数字");}}
}

4.直接传入 URL

@SpringBootTest
@AutoConfigureMockMvc
public class HtmlUrlTest {@Testpublic void testHelloEndpoint() throws Exception {// 访问 URL 并获取 HTML 内容Document doc = Jsoup.connect("https://ask.csdn.net/questions/8058214/54474042?username=qyj19920704").get();// 获取页面下id="content"的标签Element content = doc.getElementById("answer_54474042");// 获取页面下的a标签Elements answersMoney = content.getElementsByClass("Answers_Money");final String text = answersMoney.text();System.out.println(text);// 定义正则表达式,匹配小数部分String regex = "\\d+\\.\\d+";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(text);// 查找匹配的部分if (matcher.find()) {String result = matcher.group();System.out.println("提取到的数字为: " + result);} else {System.out.println("未找到匹配的数字");}}
}

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537202.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 14.04:安装 PaddleOCR 2.3

目录 一、说明 1.1 如何选择版本 1.2 查看 github 中的 PaddleOCR 版本 二、安装 2.1 安装前环境准备 2.2 下载包 2.3 解压 2.4 安装依赖库 异常处理&#xff1a;Read timed out. 2.5 下载推理模型&#xff1a;inference 2.5.1 模型存放位置 2.5.2 模型下载链接 2.5.…

es 聚合操作(一)

前言 Elasticsearch除搜索以外&#xff0c;提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 衣服品牌的受欢迎程度这些衣服的平均价格、最高价格、最低价格这些衣服的每天、每月销量如何 使用…

Rust 构建开源 Pingora 框架可以与nginx媲美

一、概述 Cloudflare 为何弃用 Nginx&#xff0c;选择使用 Rust 重新构建新的代理 Pingora 框架。Cloudflare 成立于2010年&#xff0c;是一家领先的云服务提供商&#xff0c;专注于内容分发网络&#xff08;CDN&#xff09;和分布式域名解析。它提供一系列安全和性能优化服务…

xcode15,个推推送SDK闪退问题处理办法

个推iOS推送SDK最新版本 优化了xcode15部分场景下崩溃问题&#xff0c;以及回执上传问题&#xff0c;近期您的应用有发版计划&#xff0c;建议更新SDK&#xff1a; 1&#xff09;GTSDK更新到3.0.5.0以及以上版本&#xff1b; 2&#xff09;GTCommonSDK更新到3.1.0.0及以上版本…

【深度学习目标检测】二十三、基于深度学习的行人检测计数系统-含数据集、GUI和源码(python,yolov8)

行人检测计数系统是一种重要的智能交通监控系统&#xff0c;它能够通过图像处理技术对行人进行实时检测、跟踪和计数&#xff0c;为城市交通规划、人流控制和安全管理提供重要数据支持。本系统基于先进的YOLOv8目标检测算法和PyQt5图形界面框架开发&#xff0c;具有高效、准确、…

Linux 网络套接字编程基础

端口号 我们在上一篇文章中以打电话的例子得出结论&#xff1a;在进行网络通信的时候&#xff0c;不是我们的两台机器在进行通信&#xff0c;本质上是应用层在进行通信。 为什么这么说呢&#xff1f; 网络协议的下三层&#xff0c;解决的是数据安全可靠地发送到远端机器。这…

BUU [FBCTF2019]RCEService

BUU [FBCTF2019]RCEService 开题&#xff0c;要求以json格式输入命令。 无任何信息泄露&#xff0c;源码如下&#xff1a; <?phpputenv(PATH/home/rceservice/jail);if (isset($_REQUEST[cmd])) {$json $_REQUEST[cmd];if (!is_string($json)) {echo Hacking attempt de…

开源导出html表格项目-easyHtml

开源导出html表格项目-easyHtml 背景介绍 背景 项目的由来&#xff0c;在面试的过程中&#xff0c;发现这个需求&#xff08;导出html表格&#xff09;比较常见&#xff0c;同时也引起我的兴趣&#xff0c;所以就有了开源项目easyHtml第一个版本 介绍 功能 支持自定义表格标…

win11 ubuntu子系统 开代理 调试 openai 接口

我的是laravel项目&#xff0c;步骤如下 步骤1&#xff1a;配置WSL以使用代理 首先&#xff0c;确保WSL中的所有请求都通过你的代理服务器。你可以通过在WSL的shell配置文件&#xff08;如~/.bashrc或~/.zshrc&#xff09;中设置环境变量来实现。打开终端&#xff0c;编辑对应…

为什么 VSCode 不用 Qt 而要用 Electron?

为什么 VSCode 不用 Qt 而要用 Electron? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Qt 的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&am…

使用Thymeleaf-没有js的html模板导出为pdf

html模板 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org"><head><title>PDF Template</title> </head> <body> <h1>User Information</h1> <p>Name: <span th:text"${user.name}&…

人工智能|机器学习——BIRCH聚类算法(层次聚类)

这里再来看看另外一种常见的聚类算法BIRCH。BIRCH算法比较适合于数据量大&#xff0c;类别数K也比较多的情况。它运行速度很快&#xff0c;只需要单遍扫描数据集就能进行聚类。 1.什么是流形学习 BIRCH的全称是利用层次方法的平衡迭代规约和聚类&#xff08;Balanced Iterative…