如何通过XPath精准提取HTML中的49.28数值?
解决方案
要只提取49.28这个数值,你可以通过以下几种XPath表达式实现:
直接选取第一个文本节点
使用text()[1]精准定位<td>元素下的第一个文本节点,忽略<sup>子元素的内容://table/tbody/tr[1]/td[@class='align-right nowrap'][1]/text()[1]这个表达式会直接返回
<td>里的第一个文本片段,也就是包含49.28的部分。清理文本格式(可选)
如果原文本前后有多余空格,可以用normalize-space()去除:normalize-space(//table/tbody/tr[1]/td[@class='align-right nowrap'][1]/text()[1])执行后会得到无前后空格的
49.28。
为什么原表达式会返回拼接结果?
你之前的XPath直接选取了<td>元素,默认会返回该元素所有后代文本节点的拼接内容,包括<sup>里的+1.28,所以才会得到49.28+1.28。通过指定text()[1]就能只提取目标文本节点。
内容的提问来源于stack exchange,提问作者Sonja
相关产品推荐
相关产品推荐

