新闻中心
XPath如何选取节点? 超全的XPath轴(Axis)用法总结
XPath轴用于定义从当前节点出发的导航方向,如child::、parent::、ancestor::等,结合节点测试和谓词可精准定位XML/HTML中的元素,提升数据提取效率。

在使用XPath进行XML或HTML文档解析时,选取节点是核心操作。除了基本的路径表达式(如//div、/html/body/p),XPath提供了丰富的“轴”(Axis)机制,用于定位与当前节点相关联的其他节点。掌握这些轴的用法,能让你更灵活、精准地抓取所需数据。
什么是XPath轴?
XPath轴定义了从当前节点出发,可以访问的节点方向和范围。每个轴代表一个特定的节点集合,比如父节点、子节点、祖先节点等。轴的基本语法为:
axisname::nodetest[predicate]
其中:
-
axisname:轴名称,如
child、parent -
nodetest:节点测试,如
div、*(所有元素) - [predicate]:可选条件,用于进一步筛选
常用XPath轴详解
1. child:: —— 子节点轴
选取当前节点的直接子节点。
示例:
PictoGraphic
AI驱动的矢量插图库和插图生成平台
133
查看详情
-
child::div:选择所有子级<div>元素 <li> <code>child::*:选择所有子元素节点 -
child::text():选择所有子文本节点 -
parent::*:选择父元素 -
parent::div[@class="container"]:选择父节点是否为特定div -
ancestor::div:选择所有祖先中的div元素 -
ancestor::*[1]:选择最近的一个祖先元素(即父节点) -
ancestor::body:检查是否在body内部 -
descendant::span:选择所有嵌套层级的span -
div/descendant::input:在div内找所有input -
following-sibling::li:选择后面所有的li -
following-sibling::li[1]:选择下一个li兄弟 -
h2/following-sibling::p[1]:h2后的第一个p -
preceding-sibling::li:前面所有li -
li[3]/preceding-sibling::li[1]:第3个li前的第一个li -
h1/following::p:h1之后的所有p标签 - 常用于提取标题后的内容段落
-
p/preceding::h1[1]:当前p之前最近的h1 - 适合反向查找标题或说明文字
-
self::div:如果当前节点是div,则选中 - 常用于条件判断或结合
or使用 -
attribute::id或@id:选择id属性值 -
attribute::*或@*:选择所有属性 -
namespace::*:列出所有命名空间声明 -
ancestor-or-self::div:如果当前是div或其祖先中有div,都会被选中 - 常用于向上查找容器
-
descendant-or-self::a:当前如果是a或包含a后代,都匹配 - 等价于
.//a | .[self::a] - 定位“某个标题后的第一个段落”:
//h3[text()="简介"]/following::p[1] - 查找“有特定类名的父级”:
//*[@id="main"]/ancestor::div[@class="wrapper"] - 获取“兄弟节点中的特定位置”:
//li[@class="active"]/preceding-sibling::li[1] - 轴只影响节点方向,具体结果还需配合节点测试和谓语过滤
- 某些轴(如
following、preceding)按文档顺序排列,可能跨层级 - 性能上,深层遍历(如
descendant::)可能较慢,尽量限定范围
简写:div 等价于 child::div
2. parent:: —— 父节点轴
选取当前节点的父节点。
示例:
简写:.. 等价于 parent::*
3. ancestor:: —— 祖先节点轴
选取当前节点的所有祖先节点(父、祖父、曾祖父等)。
示例:
4. descendant:: —— 后代节点轴
选取当前节点的所有后代节点(子、孙、曾孙等)。
示例:
简写:// 在路径中表示descendant::,如div//input
5. following-sibling:: —— 后面的兄弟节点
选取当前节点之后的同级节点。
示例:
6. preceding-sibling:: —— 前面的兄弟节点
选取当前节点之前的同级节点。
示例:
7. following:: —— 后面的节点(文档顺序)
选取在当前节点之后的所有节点(按文档顺序,不一定是兄弟)。
示例:
8. preceding:: —— 前面的节点(文档顺序)
选取在当前节点之前的所有节点(按文档顺序)。
示例:
9. self:: —— 自身节点
选取当前节点本身。
示例:
10. attribute:: —— 属性节点轴
选取当前节点的属性。
示例:
简写:@ 是 attribute:: 的缩写
11. namespace:: —— 命名空间轴
选取当前节点的命名空间节点(较少使用)。
示例:
12. ancestor-or-self:: —— 自身及祖先
包含当前节点及其所有祖先。
示例:
13. descendant-or-self:: —— 自身及后代
包含当前节点及其所有后代。
示例:
实用技巧与注意事项
合理组合轴和谓语,可以实现复杂定位:
注意点:
基本上就这些常用的轴。熟练掌握它们,能大幅提升你在爬虫、自动化测试或XML处理中的定位能力。多练习组合使用,你会发现XPath远比想象中强大。
以上就是XPath如何选取节点? 超全的XPath轴(Axis)用法总结的详细内容,更多请关注其它相关文章!
# 它比
# 体育赛事营销推广公司
# 什么网站适合推广咖啡机
# 湖里区网站优化公司
# seo网站优化策划案
# 翠竹最新网站建设
# 新安大型网站优化
# 云浮推广营销技术招聘
# 兴化百度网站优化公司
# 芙蓉区百度营销推广
# 海口网站优化推荐
# 中有
# 遍历
# 你在
# 如何在
# html
# 如何用
# 仅仅是
# 而不
# 第一个
# 文档
# red
# 排列
# xml处理
# 爬虫
# win
# ai
# app
# node
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单
随机参数递归函数的基准调用次数与时间复杂度探究
CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整
快手网页版在线登录 快手网页版官网入口快速访问
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
蛙漫安全无毒 官方认证的绿色入口
QQ官网正版登录链接 QQ在线登录入口最新
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
PHP中获取MongoDB服务器运行时间(Uptime)的专业指南
解决Flask中Quill编辑器内容提交失败及TypeError的指南
美团外卖商家服务中心入口 美团商家版官网入口
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
Python:递归比较文件夹内容并找出特定类型文件的差异
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
生成rdflib自定义SPARQL函数:参数匹配与实践指南
铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧
深入理解J*a链表中的IPosition接口与使用
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
台积电1.4nm工艺A14瞄准2028:10年来性能提升80%
漫蛙漫画登录站点 漫蛙2正版漫画快速访问
Node.js中HTML按钮与J*aScript函数交互的正确姿势
Python自定义类排序:解决lambda键值访问TypeError的实践指南
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
Mac怎么使用表情符号_Mac Emoji快捷键面板
Win11怎么开启省电模式_Win11电池节电模式自动开启
UC浏览器网页版登录入口官网 电脑版网址入口
GemBox Document HTML转PDF垂直文本渲染问题及解决方案
解决Python单元测试中Mock异常方法调用计数为零的问题
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
mc.js免安装版 mc.js一键畅玩入口
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
谷歌推RCS信息存档功能:公司可监控员工私密信息!
抖音极速版最新版本 抖音极速版官方下载地址
2026春节假期票务安排_2026春节放假购票指南
漫蛙漫画官方首页 漫蛙2漫画在线阅读入口
Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置
Golang指针如何与map组合使用_Golang map指针组合实践
J*a里如何使用forEach遍历Map_Map遍历方法说明
Pygame教程:解决用户输入与游戏状态更新不同步问题
多闪网页版在线观看免费入口_多闪官网访问入口
如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧
蛙漫官方正版入口 蛙漫网页在线全集免费观看
解决 MongoDB 聚合查询中对象数组 _id 匹配问题


2025-11-23
浏览次数:次
返回列表
数据提取效率。