我正在尝试从这个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">
<span style="font-size:8.0pt;font-family:"Arial",sans-serif;color:black">03/</span>
<span style="font-size:8.0pt;font-family:"Arial",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();
}
答案 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);
说明:您可以直接创建p
,class="MsoNormal"
的元素,并使用.text()
获取文字。因为有一些空间即将到来,所以可以使用.replaceAll(" ", "")
。
希望这会对你有所帮助。
您的结果: 03/26/17