> 文章列表 > jsoup 简单解析html ul li

jsoup 简单解析html ul li

jsoup 简单解析html ul li

在使用 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