XPath获取span内的文本

6
我正在尝试找出XPath,以从以下HTML片段中检索“text Data 3”的文本。
  <span class="inner-span">
    Text-data 1
    <br>
    <span>Text Data 2</span> text Data 3
   </span>

到目前为止,我已经尝试了以下XPath表达式,它可以让我定位到具有'class=inner-span'的span元素。
 /html/body/div/div[4]/div[2]/div[2]/div/div[2]/div/span[@class="inner-span"]

但是我不知道应该在XPath中添加什么内容,才能从上面的HTML片段中仅获取文本“text Data 3”。谢谢。
2个回答

14

对于您的特定情况,此XPath查询将起作用:

normalize-space(//span[@class="inner-span"]/text()[last()])

在这个在线测试器中尝试,并得出以下结果:

  1. 您的HTML;
  2. 我的XPath表达式;
  3. 期望的结果为“text Data 3”。

enter image description here


我在您提供的同一链接上检查了您的解决方案,但它会从[@class="inner-span"]中提取所有文本数据。我只想要文本数据3,而不是所有文本数据1、文本数据2和文本数据3。 - shivamsupr
我已经添加了一张截图,展示了我得到的结果以及如何得到它,希望能对你有所帮助。 - Rolando Isidoro

1
您可以选择/html/body/div/div[4]/div[2]/div[2]/div/div[2]/div/span[@class="inner-span"]/text()[last()]来获取文本节点(尽管有前导和尾随空格),或者您可以使用返回字符串的XPath,带有 normalize-space(/html/body/div/div[4]/div[2]/div[2]/div/div[2]/div/span[@class="inner-span"]/text()[last()])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接