我有一个格式良好的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
。
答案 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","")