xpath的基本使用,精准定位html中的元素

news2024/9/27 5:53:44

元素定位 

基本语法

/              从根节点开始选取                            /html/div/span
//             从任意节点开始选取                         //input
.              选取当前节点     
..             选取当前节点的父节点                     //input/.. 会选取 input 的父节点
@            选取属性或者根据属性选取             //input[@data] 选取具备 data 属性的 input 元素 //@data 选取所有 data 属性
*              通配符,表示任意节点或任意属性     

标签名

        寻找特定标签名的元素

/div        从根节点获取div
//div       从任意节点获取div
/*          从根节点获取任意元素

属性名

        寻找带有特定属性的元素,@符号代表要对属性值进行操作了

//div[@class="c1"]        class为c1的div元素
//*[@class="c1"]          class为c1的任意元素

层级

        寻找特定层级的元素

//div[@class="c1"]/p        class为c1的div元素下的p元素
//*[@class="c1"]/span[@class="c2"]          class为c1的任意元素下的class为c2的span元素

次序

        寻找指定排名的元素

//div[@class="c1"]/p[1]        class为c1的div元素下的第一个p元素
//*[@class="c1"]/span[@class="c2"][2]          class为c1的任意元素下的第二个class为c2的span元素

元素筛选

逻辑表达式

        |为逻辑或表达式,表示二者满足其一便可用于链接两个完整的xpath表达式,注意是完整的。

//div[@class="c1"]/p[1]|//*[@class="c1"]/span[@class="c2"][2]

        and,or,not是在方括号内用的

//div[@class="c1" or @class="c2"]

判断语句

        起始方括号内的语句就是判断语句

/items/item[position() >= 2 and position() <= 5]        寻找/items/item,只匹配其中的第二到第五个

a[text()='Login']             可以匹配文本为"Login"的所有 <a> 元素。

函数的使用

text

        获取节点中所有的字符组成字符串

<book>  
    <title>Learning XPath</title>  
</book>

/book/title/text()

结果:
Learning XPath

concat()

    concat() 函数用于将两个或多个字符串值连接成一个字符串。

<book>  
    <title>Learning XPath</title>  
</book>

concat('The book title is: ', /book/title/text())

结果:The book title is: Learning XPath

substring()

substring() 函数用于从一个字符串中提取子字符串。

<book>  
    <title>XPath for Dummies</title>  
</book>

substring(/book/title/text(), 1, 4)

contains()

<book>  
    <title>XPath Fundamentals</title>  
</book>

contains(/book/title/text(), 'Path')

true

starts-with()

starts-with() 函数检查一个字符串是否以指定的前缀开始。

<book>  
    <title>XPath Basics</title>  
</book>

starts-with(/book/title/text(), 'XPath')

true

number()

number() 函数将字符串转换为数字。

<book>  
    <price>29.99</price>  
</book>

number(/book/price/text())

29.99

sum()

sum() 函数用于计算节点集中所有节点的数值之和。

<books>  
    <book>  
        <price>19.99</price>  
    </book>  
    <book>  
        <price>24.99</price>  
    </book>  
</books>

sum(/books/book/price/text())

44.98

温馨提示

        xpath在定位网页元素和获取内容时很有用,它的特性用在爬虫上非常好用,下一篇文章是在python的lxml库中使用xpath。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32】RTT-Studio中HAL库开发教程七:IIC通信--EEPROM存储器FM24C04

文章目录 一、简介二、模拟IIC时序三、读写流程四、完整代码五、测试验证 一、简介 FM24C04D&#xff0c;4K串行EEPROM&#xff1a;内部32页&#xff0c;每个16字节&#xff0c;4K需要一个11位的数据字地址进行随机字寻址。FM24C04D提供4096位串行电可擦除和可编程只读存储器&a…

Excel 设置自动换行

背景 版本&#xff1a;office 专业版 11.0 表格内输入长信息&#xff0c;发现默认状态时未自动换行的&#xff0c;找了很久设置按钮&#xff0c;遂总结成经验帖。 操作 1&#xff09;选中需设置的单元格/区域/行/列。 2&#xff09;点击【开始】下【对齐方式】中的【自动换…

HAproxy,nginx实现七层负载均衡

环境准备&#xff1a; 192.168.88.25 &#xff08;client&#xff09; 192.168.88.26 &#xff08;HAproxy&#xff09; 192.168.88.27 &#xff08;web1&#xff09; 192.168.88.28 (web2) 192.168.88.29 &#xff08;php1&#xff09; 192.168.88.30…

基于微信小程序的教学质量评价系统ssm(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的教学质量评价系统的开发全过程。通过分析基于微信小程序的教学质量评价系统管理的不足&#xff0c;创建了一个计算机管理基于微信小程序的教学…

【Anti-UAV410】论文阅读

摘要 无人机在红外视频中的感知&#xff0c;对于有效反无人机是很重要的。现有的跟踪数据集存在目标大小和环境问题&#xff0c;不能完全表示复杂的逼真场景。因此作者就提出了Anti-UAV410数据集&#xff0c;该数据集总共410个视频和超过438K个标注框。为了应对复杂环境无人机跟…

丹摩智算(damodel)部署stable diffusion实验

名词解释&#xff1a; 丹摩智算&#xff08;damodel&#xff09;&#xff1a;是一款带有RTX4090&#xff0c;Tesla-P40等显卡的公有云服务器。 stable diffusion&#xff1a;是一个大模型&#xff0c;可支持文生图&#xff0c;图生图&#xff0c;文生视频等功能 一.实验目标 …

Linux-TCP重传

问题描述&#xff1a; 应用系统进行切换&#xff0c;包含业务流量切换&#xff08;即TongWeb主备切换&#xff09;和MYSQL数据库主备切换。首先进行流量切换&#xff0c;然后进行数据库主备切换。切换后发现备机TongWeb上有两批次慢请求&#xff0c;第一批慢请求响应时间在133…

【HarmonyOS】应用引用media中的字符串资源如何拼接字符串

【HarmonyOS】应用引用media中的字符串资源如何拼接字符串 一、问题背景&#xff1a; 鸿蒙应用中使用字符串资源加载&#xff0c;一般文本放置在resoutces-base-element-string.json字符串配置文件中。便于国际化的处理。当然小项目一般直接引用字符串&#xff0c;不需要加载s…

计算机毕业设计 基于Python国潮男装微博评论数据分析系统的设计与实现 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

LeetCode 149. 直线上最多的点数

LeetCode 149. 直线上最多的点数 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1&#xff1a; 输入&#xff1a;points [[1,1],[2,2],[3,3]] 输出&#xff1a;3 示例 2&#xff1a; 输入&…

【数据结构之线性表】有序表的合并(链表篇)

链表有序表的合并 思路图 将链表L1和L2按照顺序合并到L3中&#xff08;注&#xff1a;三个链表都是带头结点的&#xff09; A、要实现有序合并&#xff0c;必须先比较L1,L2两表中结点的大小&#xff0c;这里我们暂时先不讨论&#xff0c;直接根据图中来进行思路整理&#xff…

pve主要架构和重要服务介绍

Proxmox VE (PVE) 是一款开源的虚拟化平台&#xff0c;它基于 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 技术&#xff0c;支持虚拟机和容器的运行。PVE 还提供高可用集群管理、软件定义存储、备份和恢复以及网络管理等企业级功能。下面介绍 PVE 的主要架…

jenkins中多个vue项目共用一个node_modules减少服务器内存的占用,对空间造成资源浪费

多个vue项目使用的node_modules一致&#xff0c;每个项目都安装一遍依赖&#xff0c;对空间造成资源浪费。 通过服务器上的软连接mklink(windows服务器&#xff0c;如果是linux服务器用ln)来共用一套node_modules windows mklink /d [链接文件或目录] [原始文件或目录] 进入…

二叉树的基本概念(下)

文章目录 &#x1f34a;自我介绍&#x1f34a;二叉树的分类满二叉树完全二叉树 &#x1f34a;二叉树的存储顺序存储[完全二叉树]链式存储 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34…

无人机避障——4D 毫米波雷达 SLAM篇(一)

做无人机避障相关工作&#xff0c;3D毫米波避障测试顺利后&#xff0c;开始做4D毫米波雷达无人机避障遇到4D雷达点云需要进行处理的问题&#xff0c;查阅文献&#xff0c;发现以下这篇文章中的建图方法应该为后续思考的方向&#xff0c;特此将这个开源项目进行复现和学习&#…

react crash course 2024(2) 创建项目及vscode插件

使用vite创建react项目 npm create vitelatest react-crash-2024 跳到那个项目 cd .\react-crash-2024 打开那个项目 code . 在vite.config.js中设置端口 安装依赖 npm i 运行 npm run dev vs code插件 rafce //在底部导出的react箭头函数组件

计算机毕业设计 基于Python医院预约挂号系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【AI】深度学习的数学--核心公式

1 梯度下降 f ( x Δ x , y Δ y ) ≃ f ( x , y ) ∂ f ( x , y ) ∂ x Δ x ∂ f ( x , y ) ∂ y Δ y f(x\Delta x,y\Delta y) \simeq f(x,y)\frac{\partial f(x,y)}{\partial x}\Delta x\frac{\partial f(x,y)}{\partial y}\Delta y f(xΔx,yΔy)≃f(x,y)∂x∂f(x,y)​…

聚观早报 | 豆包视频生成大模型发布;华为纯血鸿蒙将开启公测

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月25日消息 豆包视频生成大模型发布 华为纯血鸿蒙将开启公测 高德地图将发放百亿补贴 12306上线“车内换座”新…

RK3568笔记六十三:基于LVGL的Linux相机

若该文为原创文章,转载请注明原文出处。 记录移植韦老师的基于LVGL的Linux相机项目,主要是想学习如何在LVGL下显示摄像头数据。 此项目是基于老师的源码框架移植的,地址是lv_100ask_linux_camera: 基于LVGL的Linux相机 (gitee.com) 个人使用的是RK3568,正点原子板子,所以…