求助:使用XPath提取HTML片段中的指定文本节点内容
求助:使用XPath提取HTML片段中的指定文本节点内容
嗨,我来帮你搞定这个XPath提取的问题~
你已经找到获取<strong>标签里"Time: "的思路啦,对应的XPath可以更明确地写成:
//div[@class="inner-box"]/p[@class="inner-info-blk"]/strong/text()
这样就能直接拿到"Time: "这个文本内容。
接下来是获取"13:45"这个时间值,它是<p>标签里紧跟在<strong>后面的同级文本节点,给你两种实用的方法:
- 方法一:定位
<strong>的后续文本节点
直接用following-sibling::text()来选取<strong>之后的文本,XPath如下:
//div[@class="inner-box"]/p[@class="inner-info-blk"]/strong/following-sibling::text()
不过这个文本可能包含多余的空格和引号,你可以用normalize-space()来清理,变成:
normalize-space(//div[@class="inner-box"]/p[@class="inner-info-blk"]/strong/following-sibling::text())
这样就能得到干净的"13:45"。
- 方法二:直接选取
<p>下的第二个文本节点<p>标签里有两个文本节点(一个是<strong>里的,另一个就是目标时间),所以可以直接指定选取第二个文本节点:
//div[@class="inner-box"]/p[@class="inner-info-blk"]/text()[2]
同样搭配normalize-space()清理格式:
normalize-space(//div[@class="inner-box"]/p[@class="inner-info-blk"]/text()[2])
如果想一次性获取<p>里的所有文本内容,也可以用//div[@class="inner-box"]/p[@class="inner-info-blk"]/text(),它会返回两个文本节点,分别对应"Time: "和带格式的"13:45"。
备注:内容来源于stack exchange,提问作者Anaras
相关产品推荐
相关产品推荐

