跨度中的jsoup span作为单个对象返回

时间:2017-09-06 15:41:07

标签: jsoup

我正在尝试从这个html中挖掘一些数据,
html跨越另一个范围(Seems like valid html according to other stack over flow post

所以表达式

td  > p > span

返回2个元素(第二个元素中包含两个跨度)
有办法解决这个问题吗?

在这个例子中,我感兴趣的值是 03/26/17

<td width="414" style="width:310.25pt;border:none;border-bottom:solid #AEAAAA 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:.3in">
    <p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:normal">
&nbsp;

        <span style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif;color:black">03/</span>
        <span style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif">26<span style="color:black">/17</span>
        </span>
        <o:p/>
    </p>
</td>

代码:

protected String getSimpleValue(org.jsoup.nodes.Document doc,String selector) {
    StringBuffer buff = new StringBuffer();

    try {           
        Elements result = doc.select(selector);

        for (Element element : result) {
            buff.append(element.ownText()+" ");
            }
    }catch(Exception ex) {
        ex.printStackTrace();
    }
return buff.toString();
}

2 个答案:

答案 0 :(得分:1)

&#34; 03 /&#34;的选择器是.MsoNormal > span:nth-child(1)和&#34; 26/17&#34;的选择器是.MsoNormal > span:nth-child(2) 你可以看到它here

答案 1 :(得分:1)

你可以尝试下面的代码。这将给你想要的结果。

 Element ele= document.select("p[class=MsoNormal]").get(0);
 String strdate = ele.text().replaceAll(" ", "");
 System.out.println(strdate);

说明:您可以直接创建pclass="MsoNormal"的元素,并使用.text()获取文字。因为有一些空间即将到来,所以可以使用.replaceAll(" ", "")。 希望这会对你有所帮助。

您的结果: 03/26/17