SpringBoot、Java 使用 Jsoup 解析 HTML 页面

使用 Jsoup 解析 HTML 页面

什么是 Jsoup?

Jsoup 是一个用于处理 HTML 页面的 Java 库,它提供了简单的 API,使得从 HTML 中提取数据变得非常容易。无论是获取特定标签的内容还是遍历整个页面的元素,Jsoup 都能轻松胜任。

如何使用 Jsoup 解析 HTML 页面?

首先,确保你的 Java 项目中已经添加了 Jsoup 的依赖。你可以在 Maven 或 Gradle 中添加以下依赖:

xml 复制代码
  <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>1.15.3</version>
  </dependency>

然后,你可以按照以下步骤来使用 Jsoup 解析 HTML 页面:

步骤:

步骤 1:导入 Jsoup 类

java 复制代码
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

步骤 2:获取页面内容并解析为 Document 对象**

java 复制代码
String url = "https://example.com"; // 替换为你想要解析的页面 URL
Document document = Jsoup.connect(url).get();

步骤 3:使用选择器获取特定元素

Jsoup 使用类似于 CSS 选择器的语法来选择和定位页面元素。以下是一些常用的选择器示例:

  • 选择特定标签的元素:
java 复制代码
Elements links = document.select("a"); // 获取所有 <a> 标签
  • 选择具有特定 class 属性的元素:
java 复制代码
Elements articles = document.select(".article"); // 获取所有 class="article" 的元素
  • 选择具有特定 id 属性的元素:
java 复制代码
Element header = document.select("#header"); // 获取 id="header" 的元素

步骤 4:遍历元素并提取内容

java 复制代码
Element.text(); // 获取链接文本
Element.attr("href"); // 获取链接地址
Element.val(); // 获取连接value值

Jsoup 常用方法的作用和用法

在前面的步骤中,我们已经简单地介绍了一些 Jsoup 的常用方法。下面是一些常用方法的详细说明:

  • Jsoup.connect(url).get(): 这个方法用于连接指定的 URL,并将页面内容解析为一个 Document 对象。

  • document.select(selector): 这个方法使用选择器来选取符合条件的元素。可以选择标签名、class、id 等属性。

  • element.text(): 获取元素的文本内容。

  • element.attr(attributeKey): 获取元素指定属性的值,常用于获取链接地址、图像路径等属性。

  • element.html(): 获取元素内部的 HTML 代码。

  • element.val():获取元素内的value属性值。

  • element.getElementById(id):按ID查找元素,包括该元素或在该元素下。

  • element.getElementsByClass(className):查找具有此类的元素,包括该元素或在该元素下。不区分大小写。

  • element.getElementsByAttribute(key):查找具有命名属性集的元素。不区分大小写。

  • element.getElementsByAttributeStarting(keyPrefix):查找属性名称以提供的前缀开头的元素。使用数据-查找具有HTML5数据集的元素。

  • element.getElementsContainingOwnText(searchText);:查找直接包含指定字符串的元素。搜索不区分大小写。文本必须直接出现在元素中,而不能出现在其任何子体中。

  • element.hasText():判断这个元素是否有任何文本内容(不仅仅是空白)。

相关推荐
mghio4 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室9 小时前
java日常开发笔记和开发问题记录
java
咖啡教室9 小时前
java练习项目记录笔记
java
鱼樱前端10 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea11 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea11 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
李少兄12 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝12 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖13 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信