[XPath] XPath 与 lxml (三)XPath 坐标轴
本章我们将沿用上一章的 XML 示例文档。
XPath 坐标轴
坐标轴用于定义当对当前节点的节点集合。
坐标轴名称 | 含义 |
ancestor | 选取当前节点的所有先辈元素及根节点。 |
ancestor-or-self | 选取当前节点的所有先辈以及当前节点本身。 |
attibute | 选取当前节点的所有属性。 |
child | 选取当前节点的所有子元素。 |
descendant | 选取当前节点的所有后代元素。 |
descendant-or-self | 选取当前节点的所有后代元素以及当前节点本身。 |
following | 选取文档中当前节点的结束标签之后的所有节点。 |
following-sibling | 选取当前节点之后的所有同级节点 |
namespace | 选取当前节点的所有命名空间节点。 |
parent | 选取当前节点的父节点。 |
preceding | 选取当前节点的开始标签之前的所有节点。 |
preceding-sibling | 选取当前节点之前的所有同级节点。 |
self | 选取当前节点。 |
位置路径表达式
位置路径可以是绝对路径,也可以是相对路径。绝对路径以 "/" 开头。每条路径包括一个或多个步,每步之间以 "/" 分隔。
绝对路径:/step/step/...
相对路径:step/step/...
每步根据当前节点集合中的节点计算。
步(step)包括三部分:
- 坐标轴(axis):定义所选节点与当前节点之间的关系。
- 节点测试(node-test):识别某个坐标轴内部的节点。
- 预判(predicate):提出预判条件对节点集合进行筛选。
步的语法:
坐标轴::节点测试[预判]
实例
# child::nodename 选取所有属于当前节点的 book 子元素,等价于 './nodename' >>> root.xpath('child::book') [<Element book at 0x2d888c8>, <Element book at 0x2d88878>] >>> root.xpath('./book') [<Element book at 0x2d888c8>, <Element book at 0x2d88878>]# attribute::lang 选取当前节点的 lang 属性,等价于 './@lang' >>> root.xpath('//*[@lang]')[0].xpath('attribute::lang') ['eng'] >>> root.xpath('//*[@lang]')[0].xpath('@lang') ['eng']# child::* 选取当前节点的所有子元素,等价于 './*' >>> root.xpath('child::*') [<Element book at 0x2d88878>, <Element book at 0x2d88738>] >>> root.xpath('./*') [<Element book at 0x2d88878>, <Element book at 0x2d88738>]# attribute::* 选取当前节点的所有属性,等价于 './@*' >>> root.xpath('//*[@*]')[0].xpath('attribute::*') ['eng'] >>> root.xpath('//*[@*]')[0].xpath('@*') ['eng']# child::text() 选取当前节点的所有文本子节点,等价于 './text()' >>> root.xpath('child::text()') ['\n ', '\n ', '\n'] >>> root.xpath('./text()') ['\n ', '\n ', '\n']# child::node() 选取当前节点所有子节点,等价于 './node()' >>> root.xpath('child::node()') ['\n ', <Element book at 0x2d88878>, '\n ', <Element book at 0x2d88738>, '\n'] >>> root.xpath('./node()') ['\n ', <Element book at 0x2d88878>, '\n ', <Element book at 0x2d88738>, '\n']# descendant::book 选取当前节点所有 book 后代,等价于 './/book' >>> root.xpath('descendant::book') [<Element book at 0x2d88878>, <Element book at 0x2d88738>] >>> root.xpath('.//book') [<Element book at 0x2d88878>, <Element book at 0x2d88738>]# ancestor::book 选取当前节点所有 book 先辈 >>> root.xpath('.//title')[0].xpath('ancestor::book') [<Element book at 0x2d88878>]# ancestor-or-self::book 选取当前节点的所有 book 先辈以及如果当前节点是 book 的话也要选取 >>> root.xpath('.//title')[0].xpath('ancestor-or-self::book') [<Element book at 0x2d88878>] >>> root.xpath('.//book')[0].xpath('ancestor-or-self::book') [<Element book at 0x2d88878>] >>> root.xpath('.//book')[0].xpath('ancestor::book') []# child::*/child::price 选取当前节点的所有 price 孙节点,等价于 './*/price' >>> root.xpath('child::*/child::price') [<Element price at 0x2d88878>, <Element price at 0x2d88738>] >>> root.xpath('./*/price') [<Element price at 0x2d88878>, <Element price at 0x2d88738>]
[XPath] XPath 与 lxml (三)XPath 坐标轴相关推荐
- python xpath语法-XPath语法和lxml模块(数据提取)
XPath语法和lxml模块 XPath lxml库 1.什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素 ...
- python xpath语法-Python爬虫之XPath语法和lxml库的用法
本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 安装 为什么要用这个库 ...
- python xpath语法-Python爬虫基础之XPath语法与lxml库的用法详解
前言 本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 XPath 即为 ...
- python爬虫基础(二)~工具包: 下载包requests、urllib和解析包BeautifulSoup(bs4)、lxml.etree.xpath
目录 1. html下载工具包 1.1 urllib工具包 1.1.1 urllib错误一 1.2 Requests工具包 1.2.1 requests错误一 2. html解析工具包 2.1 Bea ...
- Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】
爬取时间:2019-09-23 爬取难度:★☆☆☆☆☆ 请求链接:https://maoyan.com/board/4 爬取目标:猫眼电影 TOP100 的电影名称.排名.主演.上映时间.评分.封面图 ...
- Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
The lxml.etree Tutorial :https://lxml.de/tutorial.html python3 解析 xml:https://www.cnblogs.com/deadwo ...
- Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息
目录 一.XPath 二.XPath 常用规则 三.在谷歌浏览器安装XPath插件 四.Python爬虫常用插件 五.使用Xpath解析 六.Xpath匹配示例 1.查看所有的标签(如p.a.li标签 ...
- python 使用lxml中的xpath 和 scrpay中的xpath的区别
1.scrapy中的xpath:直接是response.xpath 就是可以,例如: result = response.xpath('//span[@class="packaging-de ...
- Python操作lxml库(Xpath篇)
活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.Xpath概述 1.Xpath简介 2. Xpa ...
- lxml与XPath
XPath lxml装载HTML代码有如下两种方式: (1)从文件装载,通过parse函数指定HTML文件名. (2)从代码装载,通过HTML函数指定HTML代码. XPath语言的基本语法就是多级 ...
最新文章
- ECCV2020 | 北京大学提出RGB-D语义分割新网络,多模态信息融合
- Unix高级环境编程—进程控制(一)
- linux 系统相关服务解释
- Simulink仿真---SVPWM算法
- WCF基础 (续 暴露元数据交换节点)
- python连接mongo_Python连接MongoDB操作
- 开源助推进NFV发展,红帽为运营商“定制”NFV落地方案
- U-Mail邮件系统客户无需担心OpenSSL心脏出血漏洞
- java md5.computehash_c# – ObjectDisposedException使用MD5 ComputeHash时
- VS Code 1.40 发布!可自行搭建 Web 版 VS Code!
- 【Java】矩阵乘法的朴素算法
- 关于Jeecg互联网化dubbo改造方案(上)
- 数据库引索的简单了解
- spring不懂的applicationContext
- sersync+rsync多实例网站数据同步
- WIN10命令提示符/黑窗口/cmd打不开怎么办
- window8系统激活工具
- 安培-麦克斯韦定律修正-运动的电荷产生涡旋磁场(B=μεv×E)
- transformer通俗理解
- 处理各种压力(情绪、家庭)时,需要注意什么!