我从以下html元素中提取文本
<span class="adr" style="float: none !important;">
<span class="street-address" style="float: none !important;">18, Jawaharlal Nehru
Road,
</span>
<span style="float: none !important;" class="estb_addr-HeadingTxt">
<a style="float: none !important;" href="http://kolkata.burrp.com/area/park-street" class="locality"> Park Street</a></span>
, Kolkata<span class="region" style="display: none;">Kolkata
</span>
</span>
为此我编写了以下代码:
for (Element element : doc.getAllElements())
{
for(Element childelem: element.children())
{
if (childelem.hasText() && !childelem.ownText().isEmpty())
{
String currText=childelem.ownText();
System.out.print(currText+" ");
}
}
System.out.println("");
}
理想情况下,输出应为 18,Jawaharlal Nehru Road,Park Street,Kolkata 。但它是 18,Jawaharlal Nehru Road,Kolkata 和 Park Street 。我可以理解,输出基本上是遍历外部&lt; span&gt;的DOM树的遍历。但我不确切知道如何通过Jsoup实现这一目标,其中HTML页面中元素的DOM树具有任意级别的嵌套。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
使用DOM导航或CSS选择器语法来执行任务,不要遍历所有Elements
。
Element adr = doc.select("span.adr").first().
System.out.println(adr.text());