XPath表达式解析与应用

news/2025/11/19 21:20:54/文章来源:https://www.cnblogs.com/wangwy/p/19238748
本篇内容来自AI的解读,用于后续温习回顾xpath的使用

$x("//div[@class='ec-accordion' and (./div[@class='ec-accordion-title' and ./span[text()='Prerequisites']])]")

各部分含义:
(1) //div - 选择文档中所有层级的<div>元素
(2) [@class='ec-accordion'] - 筛选class属性为"ec-accordion"的div
(3) and (...) - 并且满足括号内的条件
(4) ./div[@class='ec-accordion-title'] - 该div下必须有一个子div,且class为"ec-accordion-title"
(5) ./span[text()='Prerequisites'] - 该子div下必须有一个span元素,其文本内容为"Prerequisites"

该XPath会匹配类似这样的HTML结构
<div class="ec-accordion">
<div class="ec-accordion-title">
<span>Prerequisites</span>
</div>
<!-- 其他内容 -->
</div>

 

$x("//p[@class='right-second-section-ecommerce-bold-buttom-text-section' and normalize-space(text())='Payment methods']/ancestor::div[@class='right-second-section-ecommerce-each-text-section-row']")

各部分含义:

(1)//p[@class='right-second-section-ecommerce-bold-buttom-text-section']
查找所有class为"right-second-section-ecommerce-bold-buttom-text-section"的<p>段落元素
(2)normalize-space(text())='Payment methods'
筛选文本内容(去除首尾空格后)为"Payment methods"的元素
normalize-space()函数会移除文本前后的空白字符,并将中间连续空格转为单个空格
(3)/ancestor::div[@class='right-second-section-ecommerce-each-text-section-row']
向上查找所有祖先节点中class为"right-second-section-ecommerce-each-text-section-row"的<div>元素

该XPath会匹配类似这样的HTML结构
<div class="right-second-section-ecommerce-each-text-section-row">
<!-- 可能还有其他子元素 -->
<p class="right-second-section-ecommerce-bold-buttom-text-section">
Payment methods
</p>
<!-- 可能还有其他子元素 -->
</div>

 

$x("//p[@class='right-second-section-ecommerce-bold-buttom-text-section' and contains(text(),'License Type')]/span")

各部分含义:

(1)//p[@class='right-second-section-ecommerce-bold-buttom-text-section']
查找所有class为"right-second-section-ecommerce-bold-buttom-text-section"的<p>段落元素
(2)contains(text(),'License Type')  筛选文本内容中包含"License Type"字符串的元素
contains()函数是部分匹配,不要求完全匹配
(3)/span   选择这些段落元素下的直接子元素<span>

该XPath会匹配类似这样的HTML结构
<p class="right-second-section-ecommerce-bold-buttom-text-section">
其他文本 License Type 其他文本
<span>这是要查找的span元素</span>
可能还有其他内容
</p>
或者
<p class="right-second-section-ecommerce-bold-buttom-text-section">
License Type:
<span>专业版</span>
</p>

 

$x("//div[@class='disw-cart-subtotal']//div[@class='disw-cart-tax']/following-sibling::div")

各部分含义:
(1)//div[@class='disw-cart-subtotal']
查找所有class为"disw-cart-subtotal"的div元素(小计区域)
(2)//div[@class='disw-cart-tax']
在小计区域的后代中查找class为"disw-cart-tax"的div元素(税费信息)
(3)/following-sibling::div
选择该税费元素之后的所有同级div元素

该XPath会匹配类似这样的HTML结构
<div class="disw-cart-subtotal">
<div class="disw-cart-item">商品小计: $100</div>
<div class="disw-cart-tax">税费: $10</div>
<div class="disw-cart-discount">折扣: -$5</div> <!-- 这个会被选中 -->
<div class="disw-cart-total">总计: $105</div> <!-- 这个会被选中 -->
<div class="disw-cart-shipping">运费: $8</div> <!-- 这个会被选中 -->
</div>

following-sibling::div 之后的所有同级div, 向后
preceding-sibling::div 之前的所有同级div, 向前
following::div 之后的所有div(不限层级), 文档顺序向后

其他相关表达式

//div 从文档根节点开始,在整个文档中查找所有div, 全局查找
.//div 从当前节点开始,在当前节点的后代中查找所有div, 局部查找


./:当前节点的直接子元素
../:当前节点的父元素
../../:当前节点的祖父元素

div:nth-of-type(2) 父元素下第2个div ,选择第2个div
div:nth-child(2) 父元素下第2个子元素(必须是div), 如果第2个子元素不是div,则不匹配
div:first-of-type 父元素下第一个div ,选择第一个div
div:last-of-type 父元素下最后一个div ,选择最后一个div

<section>
<h1>标题</h1>
<div>第一个div</div> <!-- div:nth-of-type(1) -->
<p>段落</p>
<div>第二个div</div> <!-- div:nth-of-type(2) -->
<div>第三个div</div> <!-- div:nth-of-type(3) -->
</section>

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

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

相关文章

2025中国防晒品牌榜出炉!按肤质/场景选!

2025中国防晒品牌榜出炉!按肤质/场景选!宝子们!夏天防晒选不对,再贵的护肤品都白费~其实选防晒的核心超简单:看肤质+看场景,没有“万能款”!今天整理了2025年天猫618热卖榜、亚洲皮肤健康联盟口碑榜的权威推荐…

linux ftp使用

在 Linux 系统中,ftp 是一个用于通过 FTP 协议进行文件传输的命令行工具。它通常用于与远程服务器进行交互,例如上传或下载文件。? 一、使用 ftp 的基本命令 1. 连接 FTP 服务器 ftp <hostname><hostname&…

linux ftp代码

在 Linux 系统中,ftp 命令行工具是用于与 FTP 服务器进行交互的常用工具。它本身是一个命令行 FTP 客户端,但需要注意的是,ftp 已在大多数现代 Linux 发行版中被弃用,推荐使用 vsftpd(FTP 服务器)或 lftp(更现代…

linux ftpgt;put

你提到的 ftp>put 是 FTP(File Transfer Protocol) 命令行工具中的一个命令,用于在 FTP 客户端 中上传文件。? 一、ftp 命令行工具简介 ftp 是 Linux/Unix 系统中用于通过 FTP 协议 与远程服务器进行文件传输的…

题解 [YLOI 2019] 棠梨煎雪

题解 [YLOI 2019] 棠梨煎雪原文来自CnBlogs, 作者: young_tea.

2025-11-19

CF Problem - 1418C - Codeforces(dp+贪心好题!)(1500) dp操作,要分开判断先手和后手 #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+…

docker 自用手册

问题 用id删除镜像,报错Error response from daemon: No such image: 15e:latest 原因就在于,我也不知道。其他镜像并没有以15e开头,反正不知道为什么。 但是解决办法就是,多输几位ID,实在不行就直接名称删除。我…

Gemini 3发布与小试牛刀

Gemini 3发布与小试牛刀Google Gemini 3 技术范式与生态系统深度研究报告发布日期:2025年11月Gemini 3 架构特性、多模态推理能力、智能体式开发环境(Antigravity)与市场竞争格局分析1. 引言:从对话智能到代理智能…

落山基唬人队 第二次团队作业——原型设计+概要设计

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559这个作业的目标 原型设计+概…

kilocode_idea端测试

kilo code 4.113.1 大模型 glm4.6 用HTML、CSS和JavaScript(若更偏好p5.js也可选用),创建一个带有动画效果的天气卡片。要在卡片里呈现当前温度、具体位置以及天气状况,像晴天、雨天、多云这些常见天气类型都要覆盖。…

【触想智能】工业一体机在户外使用要注意的问题分享

工业一体机是一种集成了计算机、显示器、触摸屏和其他功能的设备,广泛应用于各种工业领域,包括制造业、物流、交通管理等。由于其强大的性能和可靠性,工业一体机在户外环境中的使用成为一种趋势。触想工业一体机TPC…

#20232329 2025-2026-1 《网络与系统攻防技术》实验八实验报告

#20232329 2025-2026-1 《网络与系统攻防技术》实验八实验报告1.实验内容 1)Web前端HTML:能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。 2)Web前端javascipt:理解Jav…

IDEA Debug使用方法

Step over 一行一行往下走 Step into 进入方法内部/force step into Step out 跳出当前类 Run to cursor 跳到当前光标的位置执行 Evaluate Expression 在里面执行任何一个java语句,可以查看当时的状态断点普通行断点…

初级阶段:无法连接虚拟机的故障排查思路

Xshell连接虚拟机线路图无法连接虚拟机的排查思路: 1.首先查看本地网络是否有vmnet8网卡,vmnet8是本地xshell连接到虚拟机的必要网络。 2.然后看vmnet8的IP地址、虚拟机的IP地址、虚拟交换机是否在同一网段 3.如果IP…

完整教程:AI研究-109-具身智能 机器人模型验证SOP流程详解|仿真 现实 回放 模板理论

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

高性能计算实践- 遥遥领先!看看 streaming store 在矩阵转置中有多少提升

说明 本文作为上一篇 矩阵转置 transpose 复现的补充测试。来看看 streaming store 到底什么实力。 性能测试 FORCE_INLINE void transpose_8x8_store_contiguous(const uint8_t* src0, const uint8_t* src1, const ui…

linux ftp 端口查看

在 Linux 系统中,查看 FTP 服务使用的端口通常可以通过以下几种方法实现:方法 1:使用 netstat 命令 sudo netstat -tuln | grep -E 20|21-t: 显示 TCP 端口 -u: 显示 UDP 端口 -l: 显示监听中的端口 -n: 不转换端口…

详细介绍:JavaEE初阶7.0

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AT_arc195_e [ARC195E] Random Tree Distance gemini-3 Pro题解

优化距离计算 我目前专注于核心概念:距离求和。我正在探索高效的方法来计算所有可能的父序列中所有节点对之间的总距离。组合爆炸是一个真正的障碍,但我正在思考巧妙的策略来降低计算复杂度。目标是找到一个公式,而…

noip10

11.1711.17 这场又是神人模拟赛。 大分题面。 t1 题意比Fwb模糊不清+inf。 赛后统计小样例2大家一共读出了6种答案。 感觉就是描述不清的detect。 读懂后纯简单题。 但有一车细节。 挂细节上了(代码中感叹号处)。 code…