主页

XPath的语法

2025-09-10 09:55AM

XPath的核心是路径表达式,它就像我们熟悉的文件系统路径:

/ : 从根节点开始选取(像Linux的绝对路径)。

//: 从当前节点开始,选择文档中所有满足条件的节点,无论它们在哪个位置(像文件搜索)。

1. 节点(Node):

在XPath中,文档是由各种节点构成的:

元素节点:<div>、<p>、<a>等标签

属性节点:class="example", href="https://..." 中的 class 和 href。

文本节点:标签之间的文字内容,例如:<p>这是一个文本</p>中的“这是一个文本”

2. 最常见的语法表达式:

表达式 说明 示例(假设在一个HTML文档中)    
节点名 选取此节点的所有子节点。 p 选取所有 <p> 元素。    
/ 从根节点开始选取(绝对路径)。 /html/body/div 选取从根html -> body -> div的路径。    
// 从任意位置开始选取,不考虑层级(相对路径)。 //div 选取文档中所有的 <div> 元素。    
. 选取当前节点      
.. 选取当前节点的父节点      
@ 选取属性 //a/@href 选取所有 <a> 标签的 href 属性值。    
* 通配符,匹配任何元素节点。 //div/* 选取所有 <div> 元素的所有子元素。    
@* 匹配任何属性节点。 //a/@* 选取所有 <a> 标签的所有属性。    
[] 谓语(Predicate),用来查找特定的节点或包含特定值的节点。 //div[1] 选取第一个 <div> 元素。
//a[@class=‘link’] 选取所有 class 属性为“link”的 <a> 标签。
   
` ` 选取多个路径。`//div //p选取所有<div>和所有<p>` 元素。    

3. 谓语(Predicate)

谓语放在方括号 [] 中,用来对节点进行更精细的筛选

3.1 按位置筛选

  • //div[1]:选取第一个 <div> 元素。

  • //div[last()]:选取最后一个 <div> 元素。

  • //div[position() < 3]:选取前两个 <div> 元素。

3.2 按属性筛选

  • //div[@id]:选取所有拥有 id 属性的 <div>

  • //div[@class=‘container’]:选取所有 class 属性等于“container”的 <div>

  • //a[contains(@href, ‘example.com’)]:选取所有 href 属性中包含“example.com”的 <a> 标签。(contains() 是函数,非常常用!)

3.3 按内容筛选

  • //p[text()=‘Hello’]:选取文本内容精确等于“Hello”的 <p> 标签。

  • //p[contains(text(), ‘Hello’)]:选取文本内容包含“Hello”的 <p> 标签。

3.4 组合条件

  • //div[@class=‘a’ and @id=‘b’]:并且的关系。

  • //div[@class=‘a’ or @id=‘b’]:或者的关系。

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论