导读:本期聚焦于小伙伴创作的《XPath中contains函数怎么用 XPath模糊匹配节点方法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《XPath中contains函数怎么用 XPath模糊匹配节点方法》有用,将其分享出去将是对创作者最好的鼓励。

XPath的contains函数是用于实现节点模糊匹配的核心函数,它可以在节点的属性值、文本内容中查找是否包含指定的子字符串,从而筛选出符合条件的节点,在网页爬虫、自动化测试、XML解析等场景中应用十分广泛。

XPath中contains函数怎么用 XPath模糊匹配节点方法

contains函数的基本语法

contains函数的语法结构非常简单,它接收两个参数,第一个参数是要检查的节点属性或者文本内容,第二个参数是需要匹配的子字符串,函数返回布尔值,当第一个参数包含第二个参数时返回true,否则返回false。

基本语法格式如下:

contains(要检查的节点内容, 目标子字符串)

contains函数的常见使用场景

1. 基于节点文本内容模糊匹配

当我们需要匹配文本内容中包含特定关键词的节点时,可以直接使用contains函数检查节点的text()内容。

比如要匹配所有文本内容中包含“教程”的<div>节点,XPath表达式如下:

//div[contains(text(), "教程")]

对应的HTML示例代码如下:

<div>XPath基础教程</div>
<div>Python爬虫教程</div>
<div>Java入门指南</div>

上述XPath表达式会匹配到前两个<div>节点,因为它们的文本内容中都包含“教程”这个子字符串。

2. 基于节点属性值模糊匹配

很多时候节点的属性值不是完全固定的,比如class属性可能包含多个类名,或者id属性包含动态生成的片段,这时候可以用contains函数检查属性值。

比如要匹配class属性中包含“active”的<li>节点,XPath表达式如下:

//li[contains(@class, "active")]

对应的HTML示例代码如下:

<li class="menu-item active">首页</li>
<li class="menu-item">关于我们</li>
<li class="menu-item active">产品中心</li>

上述表达式会匹配到第一个和第三个<li>节点,因为它们的class属性值中都包含“active”。

3. 多条件组合使用

contains函数还可以和其他XPath条件组合使用,实现更精准的筛选。

比如要匹配class包含“btn”且文本内容包含“提交”的<button>节点,XPath表达式如下:

//button[contains(@class, "btn") and contains(text(), "提交")]

使用contains函数的注意事项

  • contains函数的匹配是区分大小写的,比如contains(text(), "XPath")无法匹配文本内容为“xpath”的节点,如果需要不区分大小写,可以结合translate函数使用。
  • 当要检查的节点内容可能为空时,contains函数会返回false,不会报错,使用时需要注意空值的处理。
  • 如果目标子字符串本身包含特殊字符,不需要额外转义,直接作为第二个参数传入即可。

完整使用示例

下面是一个完整的Python示例,使用lxml库解析HTML文档,通过contains函数模糊匹配节点:

from lxml import etree

# 示例HTML内容
html_content = """
<div class="article">
    <h2>XPath contains函数使用教程</h2>
    <p class="desc">本文讲解XPath模糊匹配方法</p>
    <p class="desc">适合新手学习</p>
</div>
<div class="other">
    <h2>Python基础教程</h2>
</div>
"""

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

# 匹配class包含desc的p节点
p_nodes = tree.xpath('//p[contains(@class, "desc")]')
for node in p_nodes:
    print(etree.tostring(node, encoding="utf-8").decode("utf-8"))

# 匹配h2文本包含教程的节点
h2_nodes = tree.xpath('//h2[contains(text(), "教程")]')
for node in h2_nodes:
    print(etree.tostring(node, encoding="utf-8").decode("utf-8"))

运行上述代码,会输出所有class包含desc的p节点,以及所有文本包含教程的h2节点,符合我们的匹配预期。

XPathcontains函数模糊匹配节点定位修改时间:2026-07-03 05:57:24

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