当前位置: 首页 > 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.xdnf.cn/news/910099.html

相关文章:

  • K7 系列各种PCIE IP核的对比
  • 每日算法 -【Swift 算法】电话号码字母组合
  • Keil调试模式下,排查程序崩溃简述
  • 六、【ESP32开发全栈指南:深入解析ESP32 IDF中的WiFi AP模式开发】
  • 读《创新者的窘境》二分 - 破坏性创新与延续性创新
  • 飞牛使用Docker部署Tailscale 内网穿透教程
  • KL散度计算示例:用户画像 vs. 专辑播放分布的性别偏好分析
  • MySQL查询语句
  • 02 nginx 的环境搭建
  • 禅道5月更新速览 | 新增交付物配置功能,支持建立跨执行任务依赖关系,研发效能平台上线
  • 6个可提升社媒投资回报率的Facebook KPI
  • 基于tensorflow实现的猫狗识别
  • 配置git命令缩写
  • 学习记录aigc
  • 智能制造数字孪生全要素交付一张网:智造中枢,孪生领航,共建智造生态共同体
  • Verilog编程技巧01——如何编写三段式状态机
  • 数论——同余问题全家桶3 __int128和同余方程组
  • Linux非管理员用户安装python环境
  • Ubuntu创建修改 Swap 文件分区的步骤——解决嵌入式开发板编译ROS2程序卡死问题
  • 2025.6.5学习日记 Nginx主目录文件 .conf介绍、热部署 定时日志切割
  • Abaqus有限元应力集中
  • Odoo 19 路线图(新功能)
  • C++课设:考勤记录系统
  • 三、元器件的选型
  • 常用枚举技巧:基础(一)
  • QGraphicsView、QGraphicsScene和QGraphicsItem图形视图框架(八)QGraphicsProxyWidget的使用
  • CPP基础
  • Go 并发编程基础:通道(Channel)的使用
  • C语言的全称:(25/6/6)
  • Python应用break初解