使用Jsoup从HTML页面中的元素中提取文本

时间:2013-02-26 14:55:29

标签: html html-parsing jsoup

我从以下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">&nbsp;Park Street</a></span>
       ,&nbsp;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树具有任意级别的嵌套。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

使用DOM导航或CSS选择器语法来执行任务,不要遍历所有Elements

Element adr = doc.select("span.adr").first().
System.out.println(adr.text());