【问题标题】:How can I find the link URL by link text with XPath?如何通过 XPath 的链接文本找到链接 URL?
【发布时间】:2010-10-29 06:10:32
【问题描述】:

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

例子

<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。

【问题讨论】:

    标签: xml xhtml xpath


    【解决方案1】:
    //a[text()='programming quesions site']/@href 
    

    它基本上标识了一个锚节点&lt;a&gt;,它有你想要的文本,并提取href属性。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 请不要添加“谢谢”作为答案。在网站上投入一些时间,您将获得足够的 privileges 来为您喜欢的答案投票,这是 Stack Overflow 表达谢谢的方式。
      • “谢谢”不是我的“答案”。在某种程度上,我对我改进的上述答案表示赞赏。
      【解决方案3】:

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

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

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

      【讨论】:

      • 这个比较笼统。好分享
      • 这是区分大小写的。我可以忽略这里的情况吗?
      【解决方案4】:

      应该类似于:

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

      【讨论】:

      • 我会学习 xpath 吗?当我看到一个查询时,它是如此明显且易于理解......但我永远无法自己编写一个
      • @flybywire 如果您阅读了斯坦福大学的免费数据库简介课程,其中有很好的部分介绍了 XML 和 XPath。
      • 可以用".="代替text(),例如 //a[.='Register here']
      • 如果我不知道文本怎么办?我可以选择包含http或某些关键字的节点吗?
      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

        • 嗨,Peter,您有学习 xpath 查询的教程网站吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多