извлечение текста не рекурсивно с помощью Jsoup - PullRequest
4 голосов
/ 01 декабря 2019

это код, который я пытаюсь запустить:

String html = "<a href=\"/name/zola-1\">ZOLA <span class=\"tiny\">(1)</span></a>";

Document doc = Jsoup.parse(html); //connect  to the page
Element element = doc.getAllElements().first(); //recive the names elements

System.out.println(element.text()); //prints "ZOLA (1)"
System.out.println(element.ownText()); // prints nothing

моя цель - извлечь только "ZOLA", без текста дочернего узла, но ownText ничего не печатает ... как мне это сделать?

Ответы [ 2 ]

1 голос
/ 01 декабря 2019

Проблема в том, что doc.getAllElements().first() возвращает

<html>
 <head></head>
 <body>
  <a href="/name/zola-1">ZOLA <span class="tiny">(1)</span></a>
 </body>
</html>

, в то время как вы ожидаете

<a href="/name/zola-1">ZOLA <span class="tiny">(1)</span></a>

Следующее должно работать для вас:

String html = "<a href=\"/name/zola-1\">ZOLA <span class=\"tiny\">(1)</span></a>";

Document doc = Jsoup.parse(html);
Elements links = doc.getElementsByTag("a");
System.out.println(links.get(0));
System.out.println(links.get(0).ownText());

Вывод:

<a href="/name/zola-1">ZOLA <span class="tiny">(1)</span></a>
ZOLA
1 голос
/ 01 декабря 2019

Вы можете использовать это:

String html = "<a href=\"/name/zola-1\">ZOLA <span class=\"tiny\">(1)</span></a>";
Document doc = Jsoup.parse(html);
Element elementA =  doc.selectFirst("a");
System.out.println(elementA.ownText()); // ZOLA
...