当前位置: 首页 > news >正文

xpath表达式的常用知识点

好的!XPath(XML Path Language)是一种用于在XML或HTML文档中定位元素的查询语言,在网页爬虫、自动化测试和数据提取中广泛使用。以下是XPath的核心知识点和常用表达式:

1. 基本选择器

表达式作用
//tagname选取文档中所有名为tagname的元素(无论层级)。例如://div
//*选取文档中的所有元素。
//@attr选取文档中所有名为attr的属性。例如://@href
//tag[@attr]选取所有带attr属性的tag元素。例如://a[@href]
//tag[@attr='value']选取attr属性等于valuetag元素。例如://input[@name='q']

2. 路径定位

表达式作用
/从根节点开始选择。例如:/html/body/div
//从任意位置开始选择。例如://div 可匹配文档中所有<div>
.选取当前节点。
..选取当前节点的父节点。
@选取属性。例如://img/@src 选取所有图片的src属性

3. 索引与位置

表达式作用
//tag[1]选取第一个tag元素(XPath索引从1开始,与Python/JavaScript不同)。
//tag[last()]选取最后一个tag元素。
//tag[position()<3]选取前两个tag元素。
//tag[last()-1]选取倒数第二个tag元素。

4. 逻辑与条件

表达式作用
//tag[@attr='value1' and @attr2='value2']同时满足多个条件。例如://input[@type='text' and @name='user']
//tag[@attr='value' or @attr='value3']满足任一条件。例如://a[@class='btn' or @class='link']
//tag[not(@attr)]选取不带attr属性的tag元素。例如://div[not(@id)]
//tag[contains(text(),'关键词')]选取文本内容包含关键词tag元素。例如://p[contains(.,'价格')]
//tag[starts-with(@attr,'前缀')]选取attr属性以前缀开头的元素。例如://a[starts-with(@href,'https')]

5. 轴(Axes)选择

轴用于选取当前节点的相关节点(如父节点、兄弟节点等):

表达式作用
//tag/parent::*选取tag的父节点。
//tag/ancestor::*选取tag的所有祖先节点(父节点、祖父节点等)。
//tag/descendant::*选取tag的所有后代节点(子节点、孙节点等)。
//tag/following-sibling::*选取tag的所有后续兄弟节点。
//tag/preceding-sibling::*选取tag的所有前续兄弟节点。

6. 函数

XPath提供了许多内置函数,常用的有:

函数作用
text()选取节点的文本内容。例如://h1/text()
contains(string, substring)判断string是否包含substring。例如://div[contains(@class,'active')]
starts-with(string, prefix)判断string是否以prefix开头。
count()计算节点数量。例如:count(//li) 返回所有<li>元素的数量。
position()返回当前节点的位置。例如://li[position()=2] 选取第二个<li>

7. 示例

假设有以下HTML片段:

<div class="container"><h1>标题</h1><ul><li class="item">第一项</li><li class="item">第二项</li></ul><a href="https://example.com" title="链接">点击</a>
</div>

对应的XPath表达式:

  • 所有列表项://li
  • 第二个列表项的文本://li[2]/text()
  • 链接的href属性://a/@href
  • 包含item类的元素://*[contains(@class,'item')]
  • 父元素是<ul>的所有<li>//ul/li

8. 在开发者工具中使用

在Chrome/Firefox开发者工具中,可以通过以下方式验证XPath:

  1. 打开Elements面板(F12或右键→检查)。
  2. Ctrl+F(Windows)或Cmd+F(Mac)调出搜索框。
  3. 输入XPath表达式(需以//开头),例如://input[@type='submit']
  4. 匹配的元素会高亮显示。

9. 与CSS选择器对比

功能XPathCSS选择器
按属性选择//tag[@attr='value']tag[attr='value']
按文本内容选择//tag[contains(.,'文本')]不直接支持,需JS辅助
选择父节点//child/parent::tag不支持
按位置索引选择//tag[2]tag:nth-child(2)

掌握这些XPath基础知识后,你可以高效地定位和提取HTML/XML中的数据。在实际应用中,建议结合浏览器开发者工具进行调试,确保表达式的准确性。

http://www.lqws.cn/news/192025.html

相关文章:

  • Vue 3 Teleport 实战:优雅实现模态框、通知和全局组件
  • 【vLLM 学习】Cpu Offload Lmcache
  • 视频监控平台建设方案
  • 瑞它鲁肽 Retatrutide
  • 6个月Python学习计划 Day 16 - 迭代器、生成器表达式、装饰器入门
  • 【同数增位累加2+22+222+2222】2022-4-15
  • 嵌入式学习之系统编程(十一)网络编程之协议头,测试命令及工具
  • 深度学习模型部署与加速汇总
  • Linux LVM与磁盘配额
  • CMOS图像传感器系列--(二)HDR之DAG技术
  • 浏览器后台服务 vs 在线教育:QPS、并发模型与架构剖析
  • 基于J2EE架构的在线考试系统设计与实现【源码+文档】
  • Python Pandas库超详细教程:从入门到精通实战指南
  • C++.OpenGL (9/64)复习(Review)
  • python打卡44天
  • 破壁焕新能:DeviceNET转EtherNet/IP网关赋能烟草智能制造跃迁
  • 通过Spring AI框架搭建mcp服务端说明
  • 动态内存管理
  • C++——红黑树
  • 22N60-ASEMI光伏逆变器专用22N60
  • N2语法 列挙、話題提出
  • ROS1: 使用rosbag的方式将点云topic保存为pcd文件
  • 软考 系统架构设计师系列知识点之杂项集萃(83)
  • H_Prj06 8088单板机的串口
  • Java下载文件(特殊字符编码处理)
  • 为什么说数列是特殊的函数
  • 2025主流智能体Agent终极指南:Manus、OpenManus、MetaGPT、AutoGPT与CrewAI深度横评
  • Day14
  • Java-IO流之压缩与解压缩流详解
  • 前端开发面试题总结-JavaScript篇(一)