jsoup 简单解析html ul li

news/2025/1/16 0:00:00/

在使用 Jsoup 解析 HTML 中的 <ul><li> 元素时,可以使用 select() 方法和 CSS 选择器来选取它们。下面是一个简单的例子:

String html = "<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>";
Document document = Jsoup.parse(html);
Elements ulElements = document.select("ul"); // 选取 ul 元素
for (Element ulElement : ulElements) {Elements liElements = ulElement.select("li"); // 在 ul 元素内部选取 li 元素for (Element liElement : liElements) {String text = liElement.text(); // 获取 li 元素的文本内容System.out.println(text);}
}

输出结果:

Item 1
Item 2
Item 3

在上述代码中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 ul 元素,再使用 select() 方法和 CSS 选择器在 ul 元素内部选取 li 元素。最后,我们可以使用 text() 方法来获取 li 元素的文本内容。

如果要在 Jsoup 中解析 HTML 中某个 <li> 元素下的子 <div> 元素,可以在 li 元素后面使用空格 并跟上 CSS 选择器来选择 li 元素下的子元素。 下面是一个例子:

String html = "<ul><li><div>Div 1</div></li><li><div>Div 2</div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Element div = li.selectFirst("div");System.out.println(div.text());
}

在上面的例子中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 li 元素,并通过调用 selectFirst() 方法选择 li 下的第一个 div 元素,最后获取 div 元素的文本内容。

输出结果:

Div 1
Div 2

如果要在 Jsoup 中解析 HTML 中某个 <li> 元素下的子 <div> 元素下的子 <div> 元素下的子 <span> 元素,可以通过多次嵌套使用 CSS 选择器来选取子元素。下面是一个例子:

String html = "<ul><li><div><div><span>Span 1</span></div></div></li><li><div><div><span>Span 2</span></div></div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Element span = li.selectFirst("div > div > span");System.out.println(span.text());
}

在上面的例子中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 li 元素,并通过多次嵌套使用 CSS 选择器选择 li 前的子元素 div、子元素 div 下的子元素 div 和子元素 div 下的子元素 span,最后获取 span 元素的文本内容。

输出结果:

Span 1
Span 2

如果要解析 HTML 中某个 <li> 元素下的子 <div> 元素下的多个子 <div> 元素下的多个子 <span> 元素,我们同样可以使用 CSS 选择器来选取这些元素。

以下是一个例子:

String html = "<ul><li><div><div><span>Span 1</span></div><div><span>Span 2</span></div></div></li><li><div><div><span>Span 3</span></div><div><span>Span 4</span></div></div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Elements spans = li.select("div > div > span");for (Element span : spans) {System.out.println(span.text());}
}

在上面的例子中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 li 元素,并通过 CSS 选择器选择 li 前的子元素 div、子元素 div 下的多个子元素 div 和多个子元素 div 下的子元素 span,最后获取每个 span 元素的文本内容。对于每个 li 元素,我们都可以通过 select() 方法获取其下的所有符合条件的 span 元素,再通过 for 循环逐个输出文本内容。

输出结果:

Span 1
Span 2
Span 3
Span 4

如果要解析 HTML 中某个 <li> 元素下的子 <div> 元素下的多个子 <div> 元素下的子 <span> 元素中 class 属性为 num 的元素,我们可以将 CSS 选择器更改为 li > div > div > div > span.num

以下是一个例子:

String html = "<ul><li><div><div><div><span class='num'>1</span><span>2</span></div><div><span class='num'>3</span><span>4</span></div></div></div></li><li><div><div><div><span class='num'>5</span><span>6</span></div><div><span class='num'>7</span><span>8</span></div></div></div></li></ul>";
Document document = Jsoup.parse(html);Elements lis = document.select("li");
for (Element li : lis) {Elements nums = li.select("div > div > div > span.num");for (Element num : nums) {System.out.println(num.text());}
}

在上面的例子中,我们在 select() 方法中将 CSS 选择器更改为 li > div > div > div > span.num,来选取 li 元素下的子元素 div,子元素 div 下的多个子元素 div,多个子元素 div 下的子元素 span,其 class 属性为 num 的元素。接着,我们通过 for 循环逐个输出符合条件的 span 元素的文本内容。

输出结果:

1
3
5
7


http://www.ppmy.cn/news/41076.html

相关文章

四次挥手刨根问底19问详解,全网最全

1.请描述一下TCP连接的四次挥手过程&#xff1f; 回答&#xff1a;TCP连接的四次挥手过程包括以下步骤&#xff1a; 步骤1&#xff1a;客户端向服务器端发送一个FIN报文段&#xff0c;请求关闭连接。 步骤2&#xff1a;服务器端收到FIN报文段后&#xff0c;向客户端发送一个…

JVM 垃圾收集器详解

一、垃圾收集器 如果说收集算法是内存回收的方法论&#xff0c;那垃圾收集器就是内存回收的实践者。《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定&#xff0c;因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别&#xff0c;不同的虚…

Oracle_EBS_核心功能(MFG)(第二部分)

BOM: Routing工艺路线应用&#xff1a;Bills of Material 职责&#xff1a;Bills of Material 基础业务学习总体说明 Routing&#xff08;工艺路线&#xff09;最终解决的问题是生产过程中加工顺序、资源和用量的标准化。准确度要求在98%以上&#xff0c;要不断与现场比对&…

基于DSP+FPGA的机载雷达伺服控制系统(二)电源仿真

板级电源分配网络的分析与仿真在硬件电路设计中&#xff0c;电源系统的设计是关键步骤之一&#xff0c;良好的电源系统为电路板 上各种信号的传输提供了保障。本章将研究电源完整性的相关问题&#xff0c;并提出一系列改 进电源质量的措施。 3.1 电源完整性 电源完整性&#xf…

Hive 作业产生的map数越多越好还是越少越好?

前言 通常情况下&#xff0c;作业会通过input目录产生一个或多个任务。 主要决定因素&#xff1a; input的文件总个数input的文件大小集群设置的文件块大小 1. 是不是越多越好呢&#xff1f; 答案&#xff1a;不是&#xff01; 原因&#xff1a;假如一个任务有很多小文件&a…

ChatGPT云桌面:无需科技挂载,即点即用

ChatGPT是一个由OpenAI开发的人工智能对话语言模型。它被设计为对话式人工智能代理&#xff0c;用于客户服务、个人助理和文娱等任务。它可以理解并生成多种语言的文本&#xff0c;包括中文、英语、西班牙语、德语等。但从某些地方访问ChatGPT可能很困难&#xff0c;特别是在注…

C++基础入门

C基础入门1.C认识1.1 第一个C程序1.1.1 创建项目1.1.2 创建文件1.1.3 编写代码1.1.4 运行程序1.3 变量1.4 常量1.5 关键字1.6 标识符命名规则2 数据类型2.1 整型2.2 sizeof关键字2.3 实型&#xff08;浮点型&#xff09;2.4 字符型2.5 转义字符2.6 字符串型2.7 布尔类型 bool2.…

ChatGPT中文在线官网-如何与chat GPT对话

怎么下载ChatGPT中文版 ChatGPT是一种基于Transformer架构的自然语言处理技术&#xff0c;其中包含了多个预训练的中文语言模型。这些中文ChatGPT模型大多数发布在Github上&#xff0c;可以通过Github的源码库来下载并使用&#xff0c;包括以下几种方式&#xff1a; 下载预训练…