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

元素定位 

基本语法

/              从根节点开始选取                            /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.mzph.cn/pingmian/55237.shtml

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

相关文章

WPS使用越来越卡顿

UOS统信wps频繁的使用后出现卡顿问题&#xff0c;通过删除或重命名kingsoft文件缓存目录。 文章目录 一、问题描述二、问题原因三、解决方案步骤一步骤二步骤三 一、问题描述 用户在频繁的使用wps处理工作&#xff0c;在使用一段时间后&#xff0c;用户反馈wps打开速度慢&…

什么东西可以当做GC Root,跨代引用如何处理?

引言 在Java的垃圾回收机制中&#xff0c;GC Root&#xff08;Garbage Collection Root&#xff0c;垃圾回收根&#xff09;是垃圾回收器判断哪些对象是可达的&#xff0c;哪些对象可以被回收的起点。GC Root通过遍历对象图&#xff0c;标记所有可达的对象&#xff0c;而那些不…

c++primier第十二章类和动态内存

本章内容包括&#xff1a; 对类成员使用动态内存分配隐式和显式地复制构造函数隐式和显式地重载赋值操作符在构造函数中使用new所必须完成的工作使用静态类成员 将布局new操作符用于对象使用指向对象的指针实现队列抽象数据类型(ADT) 动态内存和类 复习范例和静态类成员 首…

《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)

目录 0. 前言 正文&#xff1a;参数管理 1. 参数访问 1.1 [目标参数] 1.2 [一次性访问所有参数] 1.3 [从嵌套块收集参数] 2. 参数初始化 2.1 [内置初始化] 2.2 [自定义初始化] 2.3 [参数绑定-共享参数] 3. 小结&#xff08;第2节&#xff09; 4. 延后初始化 (原书第…

什么是IDE(集成开发环境)?

集成开发环境(IDE)详解 在软件开发的世界中,集成开发环境(IDE,Integrated Development Environment)扮演着至关重要的角色。它是一个综合性的软件应用程序,旨在为软件开发者提供一整套的、易于使用的工具集,以便他们能够更高效地编写、调试、测试和部署代码。简而言之…

AR 眼镜之-蓝牙电话-来电铃声与系统音效

目录 &#x1f4c2; 前言 AR 眼镜系统版本 蓝牙电话 来电铃声 系统音效 1. &#x1f531; Android9 原生的来电铃声&#xff0c;走的哪个通道&#xff1f; 2. &#x1f4a0; Android9 原生的来电铃声&#xff0c;使用什么播放&#xff1f; 2.1 来电铃声创建准备 2.2 来…

国庆普及模拟2总结

目录 题目链接&#xff1a; 官方题解&#xff1a; 概述&#xff1a; 总结反思&#xff1a; 题目 T1: 题目分析&#xff1a; 错误代码&#xff1a; 错因&#xff1a; &#xff21;&#xff23;代码&#xff1a; T2&#xff1a; 题目分析&#xff1a; 赛时代码&#xf…

LeetCode[中等] 55.跳跃游戏

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 思路 贪心算法 可达位置…

CSS中字体图标的使用

引言&#xff1a; 在网页设计当中&#xff0c;会有很多很简洁的图标&#xff0c;比如箭头&#xff0c;照相机&#xff0c;放大镜等 这些大概率都是使用字体图标来完成的&#xff0c;因为字体图标比较简洁高效&#xff0c;不会像图片一样需要向浏览器请求数据。那么字体图标该…

记一次vue路由跳转登陆之前的页面,参数丢失问题

一、背景 vue3.0,项目登陆之前访问某个可访问的页面,当跳转到需要登陆才能访问的页面时,跳转到登陆页面,登陆后再跳转到登陆之前需要登陆才能访问的页面,跳转时发现参数丢失了。 A页面(无需登陆)===> B页面(需要登陆)====> 如果未登陆跳转到C登陆页面 ===>…

什么是文件完整性监控(FIM)

组织经常使用基于文件的系统来组织、存储和管理信息。文件完整性监控&#xff08;FIM&#xff09;是一种用于监控和验证文件和系统完整性的技术&#xff0c;识别用户并提醒用户对文件、文件夹和配置进行未经授权或意外的变更是 FIM 的主要目标&#xff0c;有助于保护关键数据和…

《NoSQL》非关系型数据库MongoDB 学习笔记!

Mongo基础&#xff1a; 使用数据库&#xff1a; 使用use 命令 后面跟着要使用的数据库名字即可&#xff0c; 例如&#xff1a;use cities, 值得注意的是&#xff0c; mongo中不像mysql&#xff0c; 还需要先创建数据库&#xff0c;后访问&#xff0c; mongo中&#xff0c;你无…

数据库管理-第246期 为啥有些老板瞧不上技术(20241002)

数据库管理246期 2024-10-02 数据库管理-第246期 为啥有些老板瞧不上技术&#xff08;202401002&#xff09;1 背景2 割裂3 感触总结 数据库管理-第246期 为啥有些老板瞧不上技术&#xff08;202401002&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09…

leetcode:380. O(1) 时间插入、删除和获取随机元素

实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回 false 。bool remove(int val) 当元素 val 存在时&#xff0…

数据仓库简介(一)

数据仓库概述 1. 什么是数据仓库&#xff1f; 数据仓库&#xff08;Data Warehouse&#xff0c;简称 DW&#xff09;是由 Bill Inmon 于 1990 年提出的一种用于数据分析和挖掘的系统。它的主要目标是通过分析和挖掘数据&#xff0c;为不同层级的决策提供支持&#xff0c;构成…

计算机毕业设计 基于Python的广东旅游数据分析系统的设计与实现 Python+Django+Vue Python爬虫 附源码 讲解 文档

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

服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?

导言 在数字化时代&#xff0c;数据已成为企业运营和个人生活不可或缺的核心资产。然而&#xff0c;随着网络技术的飞速发展&#xff0c;数据安全威胁也日益严峻&#xff0c;其中勒索病毒更是成为了悬挂在数字世界上方的一把利剑。近年来&#xff0c;诸如.baxia等新型勒索病毒…

【QT Quick】基础语法:导入外部QML文件

在实际项目中&#xff0c;代码通常分为多个文件进行模块化管理&#xff0c;这样可以方便代码重用&#xff0c;例如统一风格或共享功能模块。我们将在此部分学习如何创建 QML 项目&#xff0c;并演示如何访问外部代码&#xff0c;包括其他 QML 文件、库文件以及 JS 代码。 准备…

Android AMS介绍

注&#xff1a;本文为作者学习笔记&#xff0c;如有误&#xff0c;请各位大佬指点 系统进程运行环境的初始化 Context是一个抽象类&#xff0c;它可以访问application环境的全局信息和各种资源信息和类 context功能&#xff1a; 对Activity、Service生命周期的管理通过Intent发…

LabVIEW自动生成NI-DAQmx代码

在现代数据采集和控制系统中&#xff0c;LabVIEW被广泛应用于各种工业和科研领域。其中&#xff0c;NI-DAQmx是一个强大的驱动程序&#xff0c;可以帮助用户高效地管理和配置数据采集任务。本文将介绍如何在LabVIEW中通过DAQ Assistant Express VI和任务常量自动生成NI-DAQmx代…