xpath contains_Python神技能 | 六张表,搞定 Xpath 语法!
源 / 马哥LIinux运维 文 / j_hao104
一、选取节点
常用的路劲表达式:
表达式 |
描述 |
实例 |
|
nodename |
选取nodename节点的所有子节点 |
xpath('//div') |
选取了div节点的所有子节点 |
/ |
从根节点选取 |
xpath('/div') |
从根节点上选取div节点 |
// |
选取所有的当前节点,不考虑他们的位置 |
xpath('//div') |
选取所有的div节点 |
. |
选取当前节点 |
xpath('./div') |
选取当前节点下的div节点 |
.. |
选取当前节点的父节点 |
xpath('..') |
回到上一个节点 |
@ |
选取属性 |
xpath('//@calss') |
选取所有的class属性 |
二、谓语
谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点
实例:
表达式 |
结果 |
xpath('/body/div[1]') |
选取body下的第一个div节点 |
xpath('/body/div[last()]') |
选取body下最后一个div节点 |
xpath('/body/div[last()-1]') |
选取body下倒数第二个div节点 |
xpath('/body/div[positon()<3]') |
选取body下前两个div节点 |
xpath('/body/div[@class]') |
选取body下带有class属性的div节点 |
xpath('/body/div[@]') |
选取body下class属性为main的div节点 |
xpath('/body/div[price>35.00]') |
选取body下price元素值大于35的div节点 |
三、通配符
Xpath通过通配符来选取未知的XML元素
表达式 |
结果 |
xpath('/div/*') |
选取div下的所有子节点 |
xpath('/div[@*]') |
选取所有带属性的div节点 |
四、取多个路径
使用“|”运算符可以选取多个路径
表达式 |
结果 |
xpath('//div|//table') |
选取所有的div和table节点 |
五、Xpath轴
轴可以定义相对于当前节点的节点集
轴名称 |
表达式 |
描述 |
ancestor |
xpath('./ancestor::*') |
选取当前节点的所有先辈节点(父、祖父) |
ancestor-or-self |
xpath('./ancestor-or-self::*') |
选取当前节点的所有先辈节点以及节点本身 |
attribute |
xpath('./attribute::*') |
选取当前节点的所有属性 |
child |
xpath('./child::*') |
返回当前节点的所有子节点 |
descendant |
xpath('./descendant::*') |
返回当前节点的所有后代节点(子节点、孙节点) |
following |
xpath('./following::*') |
选取文档中当前节点结束标签后的所有节点 |
following-sibing |
xpath('./following-sibling::*') |
选取当前节点之后的兄弟节点 |
parent |
xpath('./parent::*') |
选取当前节点的父节点 |
preceding |
xpath('./preceding::*') |
选取文档中当前节点开始标签前的所有节点 |
preceding-sibling |
xpath('./preceding-sibling::*') |
选取当前节点之前的兄弟节点 |
self |
xpath('./self::*') |
选取当前节点 |
六、功能函数
使用功能函数能够更好的进行模糊搜索
函数 |
用法 |
解释 |
starts-with |
xpath('//div[starts-with(@id,"ma")]') |
选取id值以ma开头的div节点 |
contains |
xpath('//div[contains(@id,"ma")]') |
选取id值包含ma的div节点 |
and |
xpath('//div[contains(@id,"ma") and contains(@id,"in")]') |
选取id值包含ma和in的div节点 |
text() |
xpath('//div[contains(text(),"ma")]') |
选取节点文本包含ma的div节点 |
scrapy xpath文档:http://doc.scrapy.org/en/0.14/topics/selectors.html
-END-
转载声明:本文选自「马哥LIinux运维 」。
重磅推出全新学习模式
用打卡学Python
每天30分钟
30天学会Python编程
世界正在奖励坚持学习的人!
xpath contains_Python神技能 | 六张表,搞定 Xpath 语法!相关推荐
- SpringBoot和Mybatis实现评论楼中楼功能(一张表搞定)
文章目录 一.数据库设计 二.搭建SpringBoot框架 三.代码编写 零.效果 在网上搜索了很多,发现很多都是用两张表或者使用jpa实现的,本篇文章将讲述使用一张表来实现评论回复楼中楼功能,使用M ...
- SpringBoot和Mybatis实现评论楼中楼功能(一张表搞定,含源码)
原文链接:https://onestar.newstar.net.cn/blog/35 零.效果 在网上搜索了很多,发现很多都是用两张表或者使用jpa实现的,本篇文章将讲述使用一张表来实现评论回复楼中 ...
- 如何用法向量求点到平面距离_高中数学丨2020新标课本,空间向量与二面角所有知识点,一张表搞定...
建立空间直角坐标系常用方法: 1.底面是正方形,常以底面两条临边x轴,y轴: 2.底面是菱形,常以底面两条对角线为x轴,y轴: 3.底面是等腰三角形,常以底边及底边上的高为x轴,y轴: 4.底面为平行 ...
- k型热电偶分度表_一张表搞定热电偶与热电阻的问题
昨天我们的钟罩炉加热系统有点问量,4#炉加热慢,对其加热系统进行了检修,问题出在热电偶,现在我简单介绍下热检测元件的功能和使用. 在工民用电过程中,加热系统也是一个应用比较广的领域,像冶炼加工厂.发电 ...
- 学习能力篇:如何用三张表搞定学习计划?
前言: 前面说过学习目标的重要性,而把目标写下来,并制定合理的计划,最后行动起来方能事半功倍. 可以说计划是成功的地图. 在以前的学习生涯中也没有人专门讲这个话题,本文就是解决这个问题的. 进入正文: ...
- android 视网膜黄斑检查 amsler,自测黄斑病变 | 一张图搞定
原标题:自测黄斑病变 | 一张图搞定 关注 很多人提到黄斑都唯恐避之不及,但你知道吗?人体也有一个重要的"黄斑"部位是必须保护的那就是眼底黄斑区,它跟我们的视觉是密切相关的. 如果 ...
- 九十六、轻松搞定Python中的PPT办公自动化系列
@Author:Runsen @Date:2020/7/14 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
- 【一张图搞定关机程序】让你的代码有趣起来!送兄弟送闺蜜,快乐原来如此简单!(赋全过程和结果,超详细解说)
从这里开始让你的代码有趣起来 事情是这样的 关机程序 实现关机指令 代码实现 如何把程序送出去 故事后续 快乐传递 事情是这样的 你也许不会想到,简单的几行的代码居然可以带来如此多的快乐,那么事情究竟 ...
- Math:利用学生计算器计算一大堆的平均数和方差思维图文教程(一张图搞定!)
Math:利用学生计算器计算一大堆的平均数和方差思维图文教程(一张图搞定!) 目录 利用学生计算器计算一大堆的平均数和方差教程 利用学生计算器计算一大堆的平均数和方差教程 我们的学生计算器其实有很多功 ...
最新文章
- 线性方程组与基尔霍夫定律
- MySql中把一个表的数据插入到另一个表中的实现代码--转
- 16.Hadoop架构再探讨第1部分
- 得到qq正在登录的qq号
- android+adt+很慢,Android的模拟器,在ADT中调试运行AVD时,速度太慢
- 狂神说spring笔记
- payara 创建 集群_高可用性(HA),会话复制,多VM Payara群集
- Android App图片轮播效果的组件化
- java 远程调用url_使用Java的URL/HttpURLConnection进行远程调用(POST请求)
- 前端开发人员常用网站
- html转word 文档 doc docx
- 浙江最新建筑施工特种工(施工升降机)机考真题及答案解析
- matlab imcrop 对应python函数_MATLAB车牌识别之车牌精准定位浅谈
- 学习|Android使用TTS语音合成
- 原型开发工具_开发工具的未来原型
- 关于侵权Sinesafe官方网站,仿冒、抄袭等恶劣行为的公告
- nyoj 小明的存钱计划
- 旧机还在换盆?! Linux deploy让她再发光!
- 手机怎么调整照片分辨率?照片清晰度dpi怎么调整?
- python爬虫(9)获取动态搞笑图片