XPath表达式选择链接中的文本

10
我有一个html文件内容如下:
<a class="bf" title="Link to book" href="/book/229920/">book name</a> 请帮我构建xpath表达式以获取链接文本(即书名)。我尝试使用/a,但是表达式没有返回结果。
3个回答

17
如果上下文是整个文档,你应该使用//而不是/。此外,你可能需要进一步深入一级来检索文本。(我认为代码应该如下所示)
//a/text()

编辑:正如Tomalak所指出的那样,应该使用text()而不是text


1
<a>元素下没有<text>元素。你的意思是//a/text() - Tomalak

3

你尝试过了吗?

//a

?

More specific is better:

//a[@class='bf' and starts-with(@href, '/book/')]

请注意,这选择了<a> 元素。在您的主机环境中,可以通过标准DOM方法(如.textContent属性)轻松提取该节点的文本值。
要选择实际的文本节点,请参见此线程中的其他答案。

你的回答帮了我很多,但是没有 starts-with 参数! - Vytas P.
@alex:这只是一个“更具体更好”的例子。 ;) - Tomalak

3

这也取决于您文档的其余部分。如果在开头使用//,将返回所有匹配的节点,如果您的文档中有其他链接,则可能会产生太多结果。

除此之外,一个可能的XPath表达式是//a/text()

您尝试的/a只返回a标签本身,如果它是根元素。要获取链接文本,需要附加/text()部分。


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