如何通过XPath链接文本find链接URL?

我有一个格式良好的XHTML页面。 当我有链接的文本时,我想查找链接的目标url。

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

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

应该类似于:

 //一个[文本()= 'text_i_want_to_find'] / @ HREF

对你来说太迟了,但对于有同样问题的其他人呢…

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

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

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

它基本上标识了一个具有你想要的文本的锚节点<a> ,并提取了href属性。

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

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

如果不区分大小写,请使用以下命令:

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

翻译将编程中的大写字母转换为小写字母编程。

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

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