Jsoup选择并迭代所有元素

Kar*_*ik 26 java jsoup

我将通过jsoup连接到一个url并获取它的所有内容,但事情是如果我选择喜欢,

doc.select("body")
Run Code Online (Sandbox Code Playgroud)

它返回一个元素,但我想获取页面中的所有元素并逐个迭代它们,例如,

<html>
<head><title>Test</title></head>
<body>
<p>Hello All</p>
<a href="test.html">Second Page</a>
<div>Test</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我选择使用正文,我会在单行中得到结果,如:

Test Hello All Second Page Test
Run Code Online (Sandbox Code Playgroud)

相反,我想选择所有元素并逐个迭代并产生结果,如,

Test
Hello All
Second Page
Test
Run Code Online (Sandbox Code Playgroud)

使用jsoup会有可能吗?

谢谢,
Karthik

Bal*_*usC 55

您可以使用*选择器选择文档的所有元素,然后单独使用每个文本获取文本Element#ownText().

Elements elements = document.body().select("*");

for (Element element : elements) {
    System.out.println(element.ownText());
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用 document.getAllElements() 而不是该选择器。请参阅https://jsoup.org/apidocs/org/jsoup/nodes/Element.html#getAllElements-- (3认同)

Bli*_*ler 5

使用 jsoup 库获取文档正文中的所有元素。

doc.body().children().select("*");

仅获取文档主体元素中的第一级元素。

doc.body().children();