如何通过链接文本与XPath找到链接URL?

时间:2009-05-27 12:05:42

标签: xml xhtml xpath

我有一个格式良好的XHTML页面。 我想找到链接的文本时找到链接的目标网址。

实施例

<a href="http://stackoverflow.com">programming questions site</a>
<a href="http://cnn.com">news</a>

我想要一个XPath表达式,如果给定programming questions site,它会给http://stackoverflow.com,如果我给它news,它会给http://cnn.com

6 个答案:

答案 0 :(得分:137)

应该类似于:

//a[text()='text_i_want_to_find']/@href

答案 1 :(得分:71)

对你来说太晚了,但对于有同样问题的其他人来说......

//a[contains(text(), 'programming')]/@href

当然,'编程'可以是任何文本片段。

答案 2 :(得分:9)

//a[text()='programming quesions site']/@href 

基本上标识了包含所需文本的锚节点<a>,并提取href属性。

答案 3 :(得分:6)

将方括号中的短语视为SQL中的WHERE子句。

所以这个查询说,“选择出现在任何地方(//)的”a“标签的”href“属性(@),但只选择(括号内的短语)”a“标签的文本内容是等于'编程问题网站'“。

答案 4 :(得分:4)

对于不区分大小写的包含,请使用以下命令:

//a[contains(translate(text(),'PROGRAMMING','programming'), 'programming')]/@href

translate将PROGRAMMING中的大写字母转换为小写编程。

答案 5 :(得分:1)

如果您使用的是html敏捷包,请使用getattributeValue:

$doc2.DocumentNode.SelectNodes("//div[@class='className']/div[@class='InternalClass']/a[@class='InternalClass']").GetAttributeValue("href","")