Xpath获取一个if href包含字符串的一部分

Posted

技术标签:

【中文标题】Xpath获取一个if href包含字符串的一部分【英文标题】:Xpath get a if href contains part of string 【发布时间】:2017-08-11 13:58:26 【问题描述】:

您好,我尝试获取所有包含 href=/p/random/?tagged=see 的元素 这是我的台词

//div[preceding::h2[text()='Most recent']]/div/div/a[@href='/p/*/?tagged=see']

如何修复此代码,我必须将“*”替换为其他内容?

【问题讨论】:

【参考方案1】:

在 XPath 2.0 或更高版本中,您可以使用 Regex 函数,例如:

//a[matches(@href, '/p/.*/\?tagged=see')]

或者使用字符串函数starts-with()ends-with()的组合:

//a[starts-with(@href, '/p/')]
   [ends-with(@href, '/?tagged=see')]

XPath 1.0 没有正则表达式,也没有 ends-with() 函数,但是,您可以 simulate the latter :

//a[starts-with(@href, '/p/')]
   [substring(@href, string-length(@href) - string-length('/?tagged=see') +1) = '/?tagged=see']

简化:

//a[starts-with(@href, '/p/')]
   [substring(@href, string-length(@href) - 11) = '/?tagged=see']

【讨论】:

以上是关于Xpath获取一个if href包含字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章

PHP Xpath:获取所有包含 needle 的 href 值

使用 PHP 和 XPath 获取匹配正则表达式的 href

XPath 表达式查找标签名称包含“名称”的元素

从 xpath 获取包含某个单词的 img src

这是获取此 HTML 字符串中唯一的 MP3 href 的正确 xpath 查询语句吗?

我如何通过xpath查找具有查找元素的动态字符串?