🧭 XPath 语法简介(Web 自动化核心定位手段)

一、XPath 是什么?

  • XPath(XML Path Language)是用于在 XML/HTML 文档中定位节点的语言,由 W3C 标准定义。
  • 浏览器支持的是 XPath 1.0
  • 应用场景广泛:用于 SeleniumScrapy 爬虫Appium 移动自动化 等。

二、XPath 与 CSS 对比

特性

CSS Selector

XPath

向上选父节点

❌ 不支持

✅ 支持 /..

向前选兄弟节点

❌ 不支持

preceding-sibling::

根据属性部分匹配

^= *=

starts-with() contains()

结构匹配表达力强

中等

非常强大


三、XPath 基本语法

1️⃣ 绝对路径(从根节点开始)

/html/body/div

等同于 CSS:html > body > div

2️⃣ 相对路径(常用)

//div

表示从任意位置开始,选择所有的 div 元素。// 类似 CSS 的后代选择器空格。

3️⃣ 子元素选择

//div/p       # 直接子元素
//div//p      # 任意后代元素

4️⃣ 通配符 *

//div/*       # div下所有直接子节点

四、按属性选择元素

基础语法

//*[@属性名='属性值']     # 注意 @ 符号和引号

示例

//*[@id='west']
//*[@class='capital huge-city']

⚠️ class 为多个值时,必须匹配完整。

存在属性(不要求值)

//*[@multiple]     # 选择有 multiple 属性的所有元素

属性部分匹配

//*[contains(@style, 'color')]         # 包含 color
//*[starts-with(@style, 'color')]      # 以 color 开头

⚠️ ends-with() 是 XPath 2.0,不被浏览器支持。


五、按位置/顺序选择

第 N 个某类元素

//p[2]           # 所有 p 中的第 2 个
//div/p[2]       # div 下的 p 中第 2 个

第 N 个任意子元素

//div/*[2]

倒数第几个

//p[last()]          # 最后一个 p
//p[last()-1]        # 倒数第二个
//div/p[last()-2]    # div 中 p 的倒数第三个

范围选择

//option[position()<=2]
//*[@class='multi_choice']/*[position()>=last()-2]

六、组合选择、父节点与兄弟节点

组选择(或运算)

//option | //h4
//*[@class='a'] | //*[@class='b']

父节点选择

//*[@id='china']/..

可以用于先选子,再回到父节点。

兄弟节点选择

//*[@class='single_choice']/following-sibling::*        # 后续兄弟
//*[@class='single_choice']/preceding-sibling::*[1]     # 前一兄弟

CSS 仅支持后续兄弟(~),不支持前兄弟选择。


七、Selenium 中使用 XPath 的注意点

1️⃣ 基本用法

driver.find_elements(By.XPATH, "//div")

2️⃣ 在 WebElement 内部查找子节点时要加 .

china = driver.find_element(By.ID, 'china')
elements = china.find_elements(By.XPATH, './/p')  # 必须加点

如果不加 .//,会从整个 DOM 根节点开始查找,而不是从当前元素。


✅ 小结:XPath 常用关键字/函数速查表

表达式

含义

/

绝对路径或直接子节点

//

相对路径或任意后代节点

*

通配符,匹配任意标签

[@attr='value']

根据属性精确匹配

contains(@attr, xxx)

属性包含子串

starts-with(@attr, x)

属性以字符串开头

position()

子元素的位次

last()

最后一个子元素位置

/..

父节点

preceding-sibling::*

前兄弟节点

following-sibling::*

后兄弟节点

`

`

组选择

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913974.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913974.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913974.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次 Linux 安装 docker-compose

一.下载 1.手动下载 下载地址&#xff1a;https://github.com/docker/compose/releases 下载后&#xff0c;放在/usr/local/bin/目录下&#xff0c;命名为&#xff1a;docker-compose 2.命令下载 sudo curl -L "https://github.com/docker/compose/releases/download/…

Go语言WebSocket编程:从零打造实时通信利器

1. WebSocket的魅力&#xff1a;为什么它这么火&#xff1f;WebSocket&#xff0c;简单来说&#xff0c;就是一种在单条TCP连接上实现全双工通信的神器。相比HTTP的请求-响应模式&#xff0c;它像是一条随时畅通的电话线&#xff0c;客户端和服务器可以随时“喊话”&#xff0c…

速学 RocketMQ

目录 本地启动&测试&可视化 核心概念 集群 主从 集群 Dledger 集群 总结 客户端消息确认机制 广播模式 消息过滤机制 顺序消息机制 延迟消息与批量消息 事务消息机制 ACL权限控制体系 RocketMQ客户端注意事项 消息的 ID、Key、Tag 最佳实践 消费者端…

【个人思考】不点菜的美学:Omakase 的信任、四季与食艺

本文原创作者:姚瑞南 AI-agent 大模型运营专家/音乐人/野生穿搭model,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 🍣 什么是 Omakase?…

vivo Pulsar 万亿级消息处理实践(3)-KoP指标异常修复

作者&#xff1a;vivo 互联网大数据团队- Chen Jianbo 本文是《vivo Pulsar万亿级消息处理实践》系列文章第3篇。 Pulsar是Apache基金会的开源分布式流处理平台和消息中间件&#xff0c;它实现了Kafka的协议&#xff0c;可以让使用Kafka API的应用直接迁移至Pulsar&#xff0c;…

Marin说PCB之Allegro高亮BOM器件技巧详解

一&#xff0c;首先在原理图输出BOM的时候&#xff0c;只需要勾选器件的位号这个选项即可&#xff0c;具体操作如下所示&#xff1a;二&#xff0c;输出BOM完成后&#xff0c;打开表格选择我们器件的位号那列即可&#xff0c;然后复制到我们的TEXT文本中。三&#xff0c;接着就…

数据结构与算法——从递归入手一维动态规划【2】

前言&#xff1a; 记录一下对左程云系列算法课程--算法讲解066【必备】的剩余习题的学习。本文主要简单记录个人学习心得和提供C版本代码。如需要题目的细致讲解&#xff0c;请前往原视频。 涉及内容&#xff1a; 动态规划、三指针、 参考视频&#xff1a; 左程云--算法讲…

【理念●体系】Windows AI 开发环境搭建实录:六层架构的逐步实现与路径治理指南

【理念●体系】从零打造 Windows WSL Docker Anaconda PyCharm 的 AI 全链路开发体系-CSDN博客 Windows AI 开发环境搭建实录&#xff1a;六层架构的逐步实现与路径治理指南 ——理念落地篇&#xff0c;从路径规划到系统治理&#xff0c;打造结构化可复现的 AI 开发环境 AI…

5G标准学习笔记15 --CSI-RS测量

5G标准学习笔记15 --CSI-RS测量 前言 前面讲了&#xff0c;在5GNR中&#xff0c;CSI-RS 是支持信道状态评估、波束管理和无线资源管理&#xff08;RRM&#xff09;的关键参考信号。下面孬孬基于3GPP TS 38.331中的内容&#xff0c;详细定义了基于 CSI-RS 的测量程序&#xff0c…

第P28:阿尔茨海默病诊断(优化特征选择版)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、进阶说明 针对于特征对模型结果的影响我们做了特征分析 特征选择 1. SelectFromModel 工作原理&#xff1a;基于模型的特征选择方法&#xff0c;使用…

AI的欧几里得要素时刻:从语言模型到可计算思维

引言 人工智能正在经历一个关键的转折点。就像欧几里得的《几何原本》为数学奠定了公理化基础一样&#xff0c;AI也正在寻找自己的"要素时刻"——一个能够将当前的语言模型能力转化为真正可计算、可验证思考的转变。 最近发表的论文《AI’s Euclid’s Elements Momen…

番外-linux系统运行.net framework 4.0的项目

基础环境&#xff1a;linux系统&#xff0c;.net framework 4.0&#xff0c;npgsql 2.2.5.0 &#xff08;版本不同&#xff0c;构建可能失败&#xff09; 方法背景&#xff1a;linux不支持运行.net framework 4.0&#xff0c;高版本mono不支持npgsql 2.x 主要使用&#xff1a…

国内AI训练都有哪些企业?:技术深耕与场景实践

国内AI训练都有哪些企业&#xff1f;当人工智能从实验室走向产业一线&#xff0c;AI 训练就像为智能系统 “施肥浇水” 的关键环节&#xff0c;让技术根系在各行业土壤里扎得更深。国内一批 AI 训练企业正各展所长&#xff0c;有的专攻技术优化&#xff0c;有的深耕场景应用。它…

微算法科技基于格密码的量子加密技术,融入LSQb算法的信息隐藏与传输过程中,实现抗量子攻击策略强化

随着量子计算技术的发展&#xff0c;传统加密算法面临被量子计算机破解的风险&#xff0c;LSQb 算法也需考虑应对未来可能的量子攻击。微算法科技基于格密码的量子加密技术&#xff0c;融入LSQb算法的信息隐藏与传输过程中&#xff0c;实现抗量子攻击策略强化。格密码在面对量子…

xAI发布Grok4+代码神器Grok4 Code,教你如何在国内升级订阅SuperGrok并使用到Grok4教程

就在今天&#xff0c;马斯克旗下xAI发布了其最新的旗舰AI模型Grok4&#xff0c;并同步推出专为开发者打造的编程利器 Grok 4 Code&#xff0c;还推出了一项全新的AI订阅计划——每月300美元的SuperGrokHeavy。 那最新发布的Grok4以及有哪些特性呢&#xff1f;以及如何才能使用…

Rust 变量遮蔽(Variable Shadowing)

在 Rust 中&#xff0c;变量遮蔽&#xff08;Variable Shadowing&#xff09; 是一种在同一作用域内重新声明同名变量的特性。它允许你创建一个新变量覆盖之前的同名变量&#xff0c;新变量与旧变量类型可以不同&#xff0c;且旧变量会被完全隐藏。核心特点允许同名变量重复声明…

【VScode | 快捷键】全局搜索快捷键(ctrl+shift+f)失效原因及解决方法

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f60e;金句分享&#x1f60e;&a…

Windows 与 Linux 内核安全及 Metasploit/LinEnum 在渗透测试中的综合应用

目录 &#x1f6e0;️ 1. 内核安全如何助力渗透测试与黑客行业 1.1 内核安全的战略价值 1.2 结合 Metasploit 与 LinEnum 的作用 &#x1f50d; 2. Metasploit 信息收集模块及其在内核安全中的应用 2.1 Windows 信息收集模块 2.2 Linux 信息收集模块 2.3 使用步骤 Wind…

京东携手HarmonyOS SDK首发家电AR高精摆放功能

在电商行业的演进中&#xff0c;商品的呈现方式不断升级&#xff1a;从文字、图片到视频&#xff0c;再到如今逐渐兴起的3D与AR技术。作为XR应用探索的先行者&#xff0c;京东正站在这场体验革新的最前沿&#xff0c;不断突破商品展示的边界&#xff0c;致力于通过创新技术让消…

瞄准Win10难民,苹果正推出塑料外壳、手机CPU的MacBook

最近有消息称&#xff0c;苹果正在研发一款定位“低价”的MacBook&#xff0c;售价可能低于800美元&#xff08;约合人民币5800元&#xff09;&#xff0c;采用的是A18 Pro芯片&#xff0c;也就是未来iPhone 16 Pro同款的“手机芯片”&#xff0c;而不是现有的M系列。这款产品预…