跨度中的 jsoup 跨度作为单个对象返回
Posted
技术标签:
【中文标题】跨度中的 jsoup 跨度作为单个对象返回【英文标题】:jsoup span in span return as single bject 【发布时间】: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 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();
【问题讨论】:
您的问题是什么?你期望什么,你会得到什么? 【参考方案1】:你可以试试下面的代码。这将给出你想要的结果。
Element ele= document.select("p[class=MsoNormal]").get(0);
String strdate = ele.text().replaceAll(" ", "");
System.out.println(strdate);
说明: U可以直接创建p
、class="MsoNormal"
的元素,并使用.text()
获取文本。因为有一些空间,所以可以使用.replaceAll(" ", "")
。
希望这会对你有所帮助。
你的结果: 03/26/17
【讨论】:
【参考方案2】:“03/”的选择器是.MsoNormal > span:nth-child(1)
,“26/17”的选择器是.MsoNormal > span:nth-child(2)
。
你可以看到它here。
【讨论】:
以上是关于跨度中的 jsoup 跨度作为单个对象返回的主要内容,如果未能解决你的问题,请参考以下文章
Beautifulsoup 4 spans containsg '@' 返回奇怪的结果
Python with Selenium:点击拦截并找到不同的跨度类