当前位置: 首页 > news >正文

常用的xpath


一、xpath 语法

简单看一下菜鸟教程即可

1、基本语法

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式:

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取(取子节点)。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。
.选取当前节点。
选取当前节点的父节点。
@选取属性。

2、基本语法-谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

路径表达式结果
/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。
//title[@lang]选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang=‘eng’]选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。



☺ 二、项目xpath 的常用场景

1、多个相同标签的选择

(1) contains ()方法:包含某个内容的标签

--举例1:
xpath("//div[@class='row']/div[contains(@class, 'search-results')]")
xpath("//p//strong[contains(text(), "Release date")]")
  • 举例2:

(2) 通过节点序号获取到第几个子节点

--举例1:
xpath("//div[@class='result'][1]/h1/a/text()")
  • 举例2:

(3) following-sibling:: 获取同级的标签

--举例1:
xpath("//p//strong[contains(text(), "Release date")]//following-sibling::i[1]")
  • 举例2:

我们公司的项目,引入的xpath的依赖的那个版本,它对xpath的解析,和谷歌浏览器看到有点不同,比如这个following-sibling::a,谷歌会取到所有a标签,但是项目中,只取第一个a标签。


2、项目中常用的方法、谓语

text() 取到文本内容

@属性 比如 @class、@href @title

following-sibling 获取同级元素

contains方法 对多个相同元素进行判断后选择

node() 获取所有节点

count方法 计算数量

postion方法 判断位置

  • 举例:
xpath2("//p//strong[contains(text(), "Genre:")]//following-sibling::a[position()<(count(//p//strong[contains(text(), "Genre:")]//following-sibling::node())-count(//p//strong[contains(text(), "Genre:")]//following-sibling::br[1]//following-sibling::node()))*0.5]")

如果xpath 使用报错,就使用xpath2,公司项目中引入了xpath2的依赖


3、xpath 字符串相关函数

和java的String的一些函数差不多!

举例拼接字符串 concat方法

xpath("//div[@class='row']/div[@class='search-results']/div[@class='result'][1]/h1/a/text()")xpath2("concat('本周Steam值得关注的游戏',//div[@class='row']/div[contains(@class, 'search-results')]/div[@class='result'][1]/h1/a/text())")

判断是否存在字符串 contains方法



三、写xpath 常用的工具—谷歌浏览器

示例:




如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

相关文章:

常用的xpath

一、xpath 语法 简单看一下菜鸟教程即可 1、基本语法 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式&#xff1a; 表达式描述nodename选取此节点的所有子节点。/从根节点选取&#xff08;取子节点&#…...

【035】基于java的进销库存管理系统(Vue+Springboot+Mysql)前后端分离项目,附万字课设论文

1.3 系统实现的功能 本次设计任务是要设计一个超市进销存系统&#xff0c;通过这个系统能够满足超市进销存系统的管理及员工的超市进销存管理功能。系统的主要功能包括&#xff1a;首页、个人中心、员工管理、客户管理、供应商管理、承运商管理、仓库信息管理、商品类别管理、 …...

【Spark分布式内存计算框架——Spark Streaming】7. Kafka集成方式

集成方式 Spark Streaming与Kafka集成&#xff0c;有两套API&#xff0c;原因在于Kafka Consumer API有两套&#xff0c; 文档&#xff1a;http://spark.apache.org/docs/2.4.5/streaming-kafka-integration.html。 方式一&#xff1a;Kafka 0.8.x版本 老的Old Kafka Consum…...

如何引入elementUI

elementUI的引入完整引入按需引入完整引入 在 main.js 中写入以下内容&#xff1a; import Vue from ‘vue’; import ElementUI from ‘element-ui’; import ‘element-ui/lib/theme-chalk/index.css’; import App from ‘./App.vue’; Vue.use(ElementUI); new Vue({ el: ‘…...

vue3+rust个人博客建站日记4-Vditor搞定MarkDown

即然是个人博客&#xff0c;那么绝对不能丢给自己一个大大的输入框敷衍了事。如果真是这样&#xff0c;现在就可以宣布项目到此结束了。如今没人享受用输入框写博客。作为一个有追求的程序员&#xff0c;作品就要紧跟潮流。 后来&#xff0c;Markdown 的崛起逐步改变了大家的排…...

KDZD-JC软化击穿试验仪

一、概 述 KDZD-JC智能软化击穿试验仪是根据GB/T4074.6-2008和idtIEC60851-6:2004标准而设计的一种新型漆包圆线检测仪器。主要适用于固体绝缘材料&#xff08;如&#xff1a;塑料、橡胶、层压材料、薄膜、树脂、云母、陶瓷、玻璃、绝缘漆等绝缘材料及绝缘件&#xff09;在工…...

【数据结构】单链表的C语言实现--万字详解介绍

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录1.链表1.1 链表的概念…...

电子科技大学软件工程期末复习笔记(七):测试策略

目录 前言 重点一览 V模型 回归测试 单元测试 集成测试 重要概念 自顶向下的集成方法 自底向上的集成方法 SMOKE方法 系统测试 验收测试 α测试 β测试 本章小结 前言 本复习笔记基于王玉林老师的课堂PPT与复习大纲&#xff0c;供自己期末复习与学弟学妹参考用…...

逆向-还原代码之除法 (Interl 64)

除法和32位差不多&#xff0c;毕竟背后的数学公式是一样的。区别只是32位的乘法需要两个寄存器来存放大数相乘的结果&#xff0c;而64位的不需要&#xff0c;一个寄存器就能存下。所以在64位的环境下&#xff0c;多了右移32位这条指令&#xff0c;其他指令一样。 //code #incl…...

Python WebDriver自动化测试

Webdriver Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化测试工具&#xff0c;它通常用来编写 Web 应用的自动化测试。 Selenium 2&#xff0c;又名 WebDriver&#xff0c;它的主要新功能是集成了 Selenium 1.0 以及 WebDriver​&#xff08;WebDriver 曾经是…...

2023年微信小程序获取手机号授权登录注册详细教程,包含服务端教程

前言 小程序中有很多地方都会用到用户的手机号&#xff0c;比如登陆注册&#xff0c;填写收货地址等等。有了这个组件可以快速获取微信绑定手机号码&#xff0c;无须用户填写。网上大多数教程还是往年的&#xff0c;而微信官方的api已做了修改。本篇文章将使用最新的方法获取手…...

YOLOv8模型学习笔记

在前面的章节中博主学习了YOLOv5的相关知识&#xff0c;从YOLOv5的数据增强处理到模型设计&#xff0c;从正负样本匹配策略到LOSS设计&#xff0c;今天博主学习的是YOLOv8&#xff0c;同为ultralytics公司的产品&#xff0c;两者无论是思想层面还是具体的设计方面都有着异曲同工…...

Java SE知识点1

一、continue、break、和return的区别是什么? 在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要 在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词: 1. continue :指跳出当前的这一次循环,…...

华为OD机试模拟题 用 C++ 实现 - 端口合并(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明端口合并题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明...

C++ Primer Plus 第6版 读书笔记(3) 第3章 处理数据

目录 3.1 简单变量 3.1.1 变量名 *位与字节 3.1.4 无符号类型 3.1.7 C如何确定常量的类型 C是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言&#xff0c;是C语言的超集。本书是根据2003年的ISO/ANSI C标准编写的&#xff0c;通过大量短…...

ArrayList源码解读

参数 //默认初始容量private static final int DEFAULT_CAPACITY 10;//空数组(用于空实例)private static final Object[] EMPTY_ELEMENTDATA {};//用于默认大小空实例的共享空数组private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {};//保存数据的数组tra…...

python实战应用讲解-【语法高级篇】时间与日期(附python示例代码)

目录 保持时间、计划任务和启动程序 time 模块 time.time() 函数 time.sleep() 函数 Python3 日期和时间...

D. Moscow Gorillas(双指针 + 区间分析)

Problem - D - Codeforces 在冬天&#xff0c;莫斯科动物园的居民非常无聊&#xff0c;尤其是大猩猩。你决定娱乐他们&#xff0c;带了一个长度为n的排列p到动物园。长度为n的排列是由n个从1到n的不同整数以任意顺序组成的数组。例如&#xff0c;[2,3,1,5,4]是一个排列&#xf…...

华为OD机试题,用 Java 解【相同数字的积木游戏 1】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

Python实现GWO智能灰狼优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…...

OpenClaw Deck:为Steam Deck打造开源模块化工具集

1. 项目概述&#xff1a;一个为Steam Deck量身定制的开源工具集如果你是一位Steam Deck的深度用户&#xff0c;大概率经历过这样的场景&#xff1a;想在掌机上玩一些非Steam平台的游戏&#xff0c;或者想对系统进行一些深度定制&#xff0c;却发现官方系统虽然稳定&#xff0c;…...

从零构建高频无线传输系统:调幅技术实战解析

1. 调幅无线传输系统入门指南 第一次接触调幅无线传输系统时&#xff0c;我也被各种专业术语搞得一头雾水。简单来说&#xff0c;调幅(AM)就是通过改变载波信号的幅度来传递信息的技术。想象一下快递员送包裹&#xff1a;载波就像快递车&#xff0c;而我们要发送的信息就是包裹…...

告别一堆转换头!一个自研小工具搞定USB、网口、485、232、TTL全互连(附配置软件)

极简主义工程师的终极武器&#xff1a;全协议互连调试工具实战指南 每次出差调试设备&#xff0c;我的背包里总塞满了各种转换头——USB转串口、网口转485、232电平转换器...直到上个月在客户现场&#xff0c;当我蹲在机柜旁手忙脚乱切换第五个转换器时&#xff0c;螺丝刀不小心…...

技术演讲的恐惧症:从实验室到舞台的艰难跨越

一、实验室里的从容&#xff0c;舞台上的慌乱对于软件测试从业者而言&#xff0c;实验室是我们的“舒适区”。在堆满服务器、屏幕上跳动着代码与测试用例的空间里&#xff0c;我们能精准定位一行代码的bug&#xff0c;能设计出覆盖所有场景的测试方案&#xff0c;能在复杂的系统…...

上网行为怎么监控?教你五个简单实用的上网行为监控方法,建议收藏

在数字化办公时代&#xff0c;企业管理面临着新的挑战&#xff1a;一方面需要网络提供资讯和工具&#xff0c;另一方面&#xff0c;无节制的非工作上网行为正在侵蚀企业的生产力。如何科学、合理地监控上网行为&#xff1f;以下为您介绍五个监控方法&#xff0c;涵盖了从硬件到…...

美政府AI主管:Anthropic 将在 18 个月内成为人类历史最有价值公司

Anthropic 已经成为人工智能革命中最成功的案例之一&#xff0c;但这或许还不是全部。风险投资家兼美国政府人工智能和加密货币沙皇大卫萨克斯在 All-In播客节目中提出了一个惊人的说法&#xff1a;Anthropic 不仅有望成为科技界最强大的公司&#xff0c;而且有望成为人类历史上…...

Vulkan学习笔记

顺序很重要&#xff1a;#define 必须在 #include <GLFW/glfw3.h> 之前出现&#xff0c;否则不起作用。作用&#xff1a;当 GLFW 的头文件看到这个宏被定义后&#xff0c;它就会知道你需要 Vulkan 支持&#xff0c;并自动执行 #include <vulkan/vulkan.h>&#xff0…...

AI建站+全链路运营,让你一个人活成一个团队

AI建站全链路运营&#xff0c;让你一个人活成一个团队去年这个时候&#xff0c;我为了搞独立站&#xff0c;头发掉了不少。那时候我觉得&#xff0c;只要网站做得漂亮&#xff0c;订单就会像雪花一样飞来。结果呢&#xff1f;网站是上线了&#xff0c;但支付接不通&#xff0c;…...

收藏!小白程序员快速入门大模型:多模态LLMs学习指南

多模态大模型&#xff08;MLLMs&#xff09;通过整合图像、文本、语音等&#xff0c;实现跨模态理解和生成。文章介绍了MLLMs的基本概念、架构&#xff0c;包括多模态编码器、连接器与LLM&#xff0c;并区分了双编码器架构和基于LLM的架构。同时&#xff0c;文章探讨了VLM前沿动…...

VideoDownloadHelper:3步实现全网视频下载的智能工具

VideoDownloadHelper&#xff1a;3步实现全网视频下载的智能工具 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper VideoDownloadHelper是一款专…...