xpath学习笔记

1.概念

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集

2. 语法

a.选取节点

在这里插入图片描述

b.谓语

在这里插入图片描述

c.选取未知节点

d.选取若干路径

在这里插入图片描述

e. starts-with、contains和text()的用法

starts-with 顾名思义,匹配一个属性开始位置的关键字
contains 匹配一个属性值中包含的字符串
text() 匹配的是显示文本信息,此处也可以用来做定位用
eg:

//input[starts-with(@name,'name1')]     查找name属性中开始位置包含'name1'关键字的页面元素
//input[contains(@name,'na')]         查找name属性中包含na关键字的页面元素
<a href="http://www.baidu.com">百度搜索</a>
xpath写法为 //a[text()='百度搜索'] 
或者 //a[contains(text(),"百度搜索")]
### 关于XPath学习笔记与教程 #### XPath简介 XPath(XML Path Language)是一种用于在XML文档中定位和检索数据的语言。它可以通过路径表达式来导航XML树结构,从而获取所需的节点或属性[^3]。 #### 基础语法示例 以下是几个常见的XPath表达式及其功能: 1. **一般表达式** 使用路径方式选取所需元素。 ```python "/bookstore/book/title" ``` 这一表达式表示从根节点`<bookstore>`出发,找到所有的`<book>`标签下的`<title>`子节点[^2]。 2. **谓词表达式** 谓词允许进一步筛选符合条件的节点。 ```python "/bookstore/book[1]" ``` 表达式中的 `[1]` 是指第一个 `<book>` 元素;而 `/bookstore/book[last()]` 则会选中最后一个 `<book>` 元素[^2]。 3. **通配符表达式** 当不确定具体节点名称时,可以利用通配符 `*` 来匹配任意类型的节点。 ```python "/bookstore/*" "//title[@*]" ``` 上述两个例子分别代表了 bookstore 的所有直接子节点以及具有任何属性的 title 元素。 4. **轴表达式** 轴定义了一组相对当前上下文节点的关系方向。 ```python "child::book" "attribute::lang" "descendant-or-self::*" ``` 第一条命令返回的是 book 子节点集合;第二条则提取出名为 lang 的属性列表;第三种情况涵盖了本节点本身加上其全部后代节点。 5. **算术与逻辑操作** 支持基本数值计算及条件判断。 ```python "/bookstore/book[price>35.00]/title" ``` 此处仅选出价格超过 35 的书籍标题。 #### Python实现案例 下面展示如何借助第三方库lxml解析并查询HTML/XML文件内的信息: ```python from lxml import etree # 创建一个简单的 XML 文档对象模型 (DOM) root = etree.XML(""" <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="zh-CN">Harry Potter</title> <author>J.K. Rowling</author> <year>2007</year> <price>29.99</price> </book> </bookstore> """) # 查找所有书名 titles = root.xpath('//book/title/text()') print(titles) # 获取特定语言版本的图书数量 english_books_count = len(root.xpath("//book[./title/@lang='en']")) print(english_books_count) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值