web-dev-qa-db-ja.com

Jsoupはすべての要素を選択して反復します

Jsoupを介してURLに接続し、そのすべてのコンテンツを取得しますが、次のように選択すると、

doc.select("body")

それは単一の要素を返しますが、ページ内のすべての要素を取得して、たとえば、それらを1つずつ繰り返したいです。

<html>
<head><title>Test</title></head>
<body>
<p>Hello All</p>
<a href="test.html">Second Page</a>
<div>Test</div>
</body>
</html>

ボディを使用して選択すると、次のような1行で結果が得られます。

Test Hello All Second Page Test

代わりに、すべての要素を選択し、1つずつ反復して、次のような結果を生成します。

Test
Hello All
Second Page
Test

それはjsoupを使用して可能ですか?

おかげで、
カルシック

26
Karthik

_*_セレクターを使用してドキュメントのすべての要素を選択し、Element#ownText()を使用して各要素のテキストを個別に取得できます。

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

for (Element element : elements) {
    System.out.println(element.ownText());
}
_
53
BalusC

Jsoupライブラリを使用して、ドキュメントの本文内のすべての要素を取得します。

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

ドキュメントのbody要素の最初のレベルの要素のみを取得します。

doc.body().children();

1

XPathまたはXPathを含む任意のライブラリを使用できます

式は//text()です

Xmlで式をテストします here

0
zawhtut