导读:本期聚焦于小伙伴创作的《XPath语法怎么用 XPath路径表达式入门教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《XPath语法怎么用 XPath路径表达式入门教程》有用,将其分享出去将是对创作者最好的鼓励。

XPath全称为XML Path Language,是一种用来在XML和HTML文档中导航和查找信息的语言,核心是通过路径表达式来定位文档中的节点,不管是做网页数据抓取还是配置文件解析,都能发挥很大作用。

XPath语法怎么用 XPath路径表达式入门教程

XPath基础概念

XPath把XML或HTML文档看作一个树形结构,文档中的每个元素、属性、文本都是一个节点,常见的节点类型有以下几种:

  • 元素节点:对应文档中的标签,比如<div>、<p>都是元素节点
  • 属性节点:对应元素的属性,比如<div class="content">中的class就是属性节点
  • 文本节点:对应元素内部的文本内容,比如<p>测试文本</p>中的测试文本就是文本节点

常用XPath路径表达式

路径表达式是XPath的核心,下面是最常用的几种表达式写法:

表达式说明示例
/从根节点开始选取/html/body/div 选取根节点下html元素内的body元素下的所有div子节点
//从当前节点选取所有后代节点,不管位置//div 选取文档中所有的div节点
.选取当前节点./p 选取当前节点下的p子节点
..选取当前节点的父节点//p/.. 选取所有p节点的父节点
@选取属性//div/@class 选取所有div节点的class属性
[]添加筛选条件//div[1] 选取第一个div节点

谓语筛选用法

谓语用来查找特定条件的节点,放在方括号中,常用的谓语写法有:

  • //div[@class="test"]:选取所有class属性为test的div节点
  • //p[contains(text(), "内容")]:选取文本内容包含内容的p节点
  • //ul/li[last()]:选取每个ul下的最后一个li节点
  • //div[@id="main"]//p[position()<3]:选取id为main的div下前两个p节点

通配符与多路径选择

XPath还支持通配符和多个路径组合选择:

  • 通配符*:匹配任意元素节点,比如//* 选取文档中所有元素节点
  • 通配符@*:匹配任意属性节点,比如//div[@*] 选取所有带属性的div节点
  • 多路径选择|:可以同时选取多个路径的节点,比如//div|//p 选取所有div和p节点

实战代码示例

下面用Python的lxml库演示XPath的实际用法,首先准备一段测试用的HTML内容:

from lxml import etree

# 测试用的HTML内容
html_content = """
<html>
  <body>
    <div id="main">
      <p class="title">XPath教程</p>
      <ul>
        <li>基础语法</li>
        <li>路径表达式</li>
        <li>实战案例</li>
      </ul>
      <p class="content">XPath是常用的解析工具</p>
    </div>
  </body>
</html>
"""

# 解析HTML
html = etree.HTML(html_content)

# 1. 选取所有p节点
p_nodes = html.xpath("//p")
print("所有p节点文本:", [node.text for node in p_nodes])

# 2. 选取class为title的p节点
title_node = html.xpath("//p[@class='title']")
print("标题节点文本:", title_node[0].text if title_node else None)

# 3. 选取ul下所有li节点的文本
li_texts = html.xpath("//ul/li/text()")
print("li节点文本列表:", li_texts)

# 4. 选取id为main的div下第一个p节点的class属性
first_p_class = html.xpath("//div[@id='main']/p[1]/@class")
print("第一个p的class属性:", first_p_class[0] if first_p_class else None)

运行上面的代码,就能得到对应的节点内容,大家可以把测试内容换成自己需要解析的网页源码,调整路径表达式来提取目标内容。

注意事项

  • 路径表达式中的索引是从1开始的,和编程里的数组从0开始不同,比如第一个节点是[1]不是[0]
  • 如果路径中包含特殊字符,比如class属性值有空格,需要用contains函数或者转义处理
  • 不同解析库对XPath的支持略有差异,使用时可以先测试基础表达式是否生效

XPath路径表达式XML解析HTML解析修改时间:2026-07-17 23:15:31

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。