数据解析 - xpath 语法
1、基础语法
(1)/
说明:从根节点开始。
示例:/html/body
(2)//
说明:选择匹配的任何位置。
示例://input
(3).
说明:当前节点。
(4)..
说明:父节点。
(5)@
说明:选择属性。
示例://*[@id="kw"] # 表示选择具备 id="kw" 属性的节点
(6)[node]
说明:选择所有 node 子元素。
(7)[@attr]
说明:选取带有 attr 属性的所有元素。
(8)*
说明:通配符,表示任意节点或任意属性。
示例://*[@id="kw"]
2、选取节点
使用XPath选取节点0
例如:
//div #选择所有div元素
//div[@class] # 选择带有class属性的div元素
//div[@id='myId'] # 选择id属性为'myId'的div元素
3、路径表达式
XPath使用路径表达式来选取节点。
例如:
//div/p # 选择所有div下的p元素
//div//p # 选择所有div下的所有p元素
4、通配符
使用通配符匹配元素。
例如:
//* # 选择所有元素
//div/* # 选择所有div下的所有子元素
5、提取标签的文本数据
使用XPath提取文本内容,返回的对象是一个列表。
例如:
//p/text() # 提取p元素的文本内容
6、谓词
当使用XPath时,谓词是一种用于过滤节点的表达式。
谓词用于在路径中添加条件,以选择满足特定条件的节点。
//div[@class='highlight'] # 选择class属性为'highlight'的div元素
//ul/li[position()<3] # 选择ul下的前两个li元素
1、谓词基础
谓词的基本语法是在方括号中放置条件表达式。例如:
//div[@class='highlight'] # 选择class属性为'highlight'的div元素
2、 比较运算符
在谓词中可以使用比较运算符,例如:
//p[@id='para1'] # 选择id属性为'para1'的p元素
//a[@href!='#'] # 选择href属性不等于'#'的a元素
//input[@type='text' and @name='username'] # 选择type为'text'且name为'username'的input元素
3、 位置谓词
位置谓词用于选择特定位置的节点,谓词下标从 1 开始。
例如:
//ul/li[1] # 选择ul下的第一个li元素
//div[@class='article']/p[position()=last()] # 选择class为'article'的div下的最后一个p元素
4、范围谓词
范围谓词用于选择一定范围内的节点。
例如:
//div[@id='content']/p[position()>1 and position()<4] # 选择id为'content'的div下的第2到第3个p元素
5、使用逻辑运算符
逻辑运算符(and、or、not)可用于组合多个条件。
例如:
//input[@type='text' and (@name='username' or @name='email')] # 选择type为'text'且name为'username'或'name'为'email'的input元素
6、使用函数
XPath还提供一些内置函数,如contains()、starts-with()等,用于进行更复杂的条件判断。例如:
//a[contains(@href, 'example.com')] # 选择href属性包含'example.com'的a元素
//h2[starts-with(@class, 'header')] # 选择class属性以'header'开头的h2元素
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现