Xpath与lxml_2XPath语法

2024-04-28 15:08
文章标签 语法 xpath lxml 2xpath

本文主要是介绍Xpath与lxml_2XPath语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

XPath使用路径表达式选择节点。

以下XML文档作为示例:

xml='''<?xml version="1.0" encoding="utf8"?>
<bookstore><book><title lang="eng">Harry Potter</title><price>29.99</price></book><book><title lang="eng">Learning XML</title><price>39.95</price></book>
</bookstore>'''


一、选择节点

以下是基本路径的表达式,XPath的路径表达式都是基于某个节点之上的。

表达式描述
nodename选取匹配节点nodename的所有子元素节点
/若以/开头,表示以根节点作为选取起点
//在已匹配节点后代中选取节点,不考虑目标节点的位置
.选取当前节点
..选取当前节点的父元素节点
@选取属性

举例:

from lxml import xpath# 得到根节点
root=etree.fromstring(xml)# 选取所有book子元素
root.xpath('book')# 选取根节点bookstore
root.xpath('/bookstore')# 选取所有book子元素的title子元素
root.xpath('book/title')# 以根节点为始祖,选取其后代中所有title元素,不管其在文档中的位置
root.xpath('//title')# 以book子元素作为始祖,选取后代中的所有price元素
root.xpath('book//price')# 以根节点为始祖,选取其后代中lang的所有属性
root.xpath('//@lang')


二、谓语predicate

用以查找某个特定的节点或符合某种条件的节点,谓语表达式位于方括号中。

举例:

# 选取属于bookstore子元素的第一个book元素
root.xpath('/bookstore/book[1]')# 选取属于bookstore子元素的最后一个book元素
root.xpath('/bookstore/book[last()]')# 选取属于bookstore子元素的倒数第二个book元素
root.xpath('bookstore/book[last()-1]')# 选取属于bookstore子元素的前两个book元素
root.xpath('/bookstore/book[position()<3]')# 以根节点为始祖,选取其后代所有含有lang属性的title元素
root.xpath('//title[@lang]')# 以根节点为始祖,选取其后代所有的title元素,且这些元素拥有值为eng的lang属性
root.xpath('//title[@lang="eng"]')# 选取bookstore中所有book子元素,且book的price子元素的值大于35
root.xpath('/bookstore/book[price>35.00]')# 选取bookstore中所有book子元素的title子元素,且book的price的值大于35
root.xpath('/bookstore/book[price>35.00]/title')


三、通配符

通配符描述
*匹配任何元素节点
@*匹配任何属性节点
node()匹配任何类型的节点

举例:

# 选取 bookstore 所有子元素
>>> root.xpath('/bookstore/*')  # 选取根节点的所有后代元素
>>> root.xpath('//*')  # 选取根节点的所有具有属性节点的title元素
>>> root.xpath('//title[@*]')  # 选取当前节点下所有节点。'\n    '是文本节点。
>>> root.xpath('node()')  # 选取根节点所有后代节点,包括元素、属性、文本。
>>> root.xpath('//node()')  

四、或条件选取

使用|运算符,选取符合或条件的若干路径。

举例:

# 选取所有book元素的title元素和price元素
>>> root.xpath('//book/title | //book/price')# 选择所有title和price元素
>>> root.xpath('//title|//price')# 选择book子元素title或者全部的price元素
>>> root.xpath('/bookstore/book/title | //price')


这篇关于Xpath与lxml_2XPath语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943564

相关文章

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe