【问题标题】:jsoup span in span return as single bject跨度中的 jsoup 跨度作为单个对象返回
【发布时间】:2017-09-06 15:41:06
【问题描述】:

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

所以表达

td  > p > span

返回 2 个元素(第二个元素包含两个 span)
有没有办法解决这个问题?

在这个例子中,我感兴趣的值是 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();
}

【问题讨论】:

  • 您的问题是什么?你期望什么,你会得到什么?

标签: jsoup


【解决方案1】:

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

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

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

你的结果: 03/26/17

【讨论】:

    【解决方案2】:

    “03/”的选择器是.MsoNormal &gt; span:nth-child(1),“26/17”的选择器是.MsoNormal &gt; span:nth-child(2)
    你可以看到它here

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 2023-03-25
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多