XPath:“InnerHtml”中的“排除”标记(<a href="">InnerHtml<span>excludeme</span></a>

时间:2009-09-22 06:40:01

标签: html xpath screen-scraping

我正在使用XPath查询HTML网站,到目前为止效果非常好,但是现在我遇到了一个(砖)墙而无法找到解决方案: - )

html看起来像这样:

<ul>
<li><a href="">Text1<span>AnotherText1</span></a></li>
<li><a href="">Text2<span>AnotherText2</span></a></li>
<li><a href="">Text3<span>AnotherText3</span></a></li>
</ul>

我想选择“TextX”部分,但不是<span></span>中的AnotherTextX部分 到目前为止,我无法提出任何(纯)XPath解决方案(在我的设置中,我很遗憾需要一个纯XPath解决方案。

这会选择我想要的东西,但会产生“TextXAnotherTextX”,我只需要“TextX”。

/ul/li/a

任何提示? : - )

1 个答案:

答案 0 :(得分:2)

这将为您提供<a>的第一个直接文本节点子项:

/ul/li/a/text()[1]

这会让你任何直接文本节点子节点(单独):

/ul/li/a/text()

上述两项都会返回"TextX",但如果你有:

<li><a href="">Text4<span>AnotherText3</span>TrailingText</a></li>

然后后者将返回:["Text4", "TrailingText"],而前者仅返回"Text4"

您的表达式/ul/li/a获取字符串值<a>,该值定义为<a>所有子项的字符串值的串联,因此您获得"TextXAnotherTextX"