xpath的学习以及语法
迪丽瓦拉
2025-06-01 04:01:20
0

1、发送请求
2、响应的解析
3、爬数据、保存数据


xpath
bs4
re(正则表达式)
在这里插入图片描述


xpath是在xml和html文档中找到信息的语言,可用在xml和html文档对元素和属性进行遍历
按照一定的规则进行数据的获取


用css选择web元素麻烦,xpath非常简单
**

绝对路径的选择

自动化程序使用的是xpath来选择web元素,

driver.find_elements_by_xpath("/html/body/div")

相对路径的选择

无论在哪里都能够找得到
要选择 所有的 div 元素里面的 所有的 p 元素 ,不管div 在什么位置,也不管p元素在div下面的什么位置,则可以这样写 //div//p

elements = driver.find_elements_by_xpath("//div//p")

如果要用css,那么代码就是下面的

elements = driver.find_elements_by_css_selector("div p")

xpath方法中div的直接子节点,就是

//div/p

css选择器的话,

div>p

通配符

如果想要选择div节点中的所有的直接子节点,可以使用

//div/*

,*是一个通配符,
对应css

  div> *

根据属性选择

[@属性名=‘属性值’]
根据id
//[@id=‘west’]
根据class
//select[@class=‘capital huge-city’]
根据其他的属性
//[multiple]
属性包含字符串
要选择 style属性值 包含 color 字符串的 页面元素 ,可以这样 //
[contains(@style,’color’)]
要选择 style属性值 以 color 字符串 开头 的 页面元素 ,可以这样 //[starts-with(@style,’color’)]
要选择 style属性值 以 某个 字符串 结尾 的 页面元素 ,大家可以推测是 //
[ends-with(@style,’color’)], 但是,很遗憾,这是xpath 2.0 的语法 ,目前浏览器都不支持
按照次序
//div/p[2]
可以选择父元素为div中的p类型第二个子元素
第几个子元素
//div/[2]
某类型倒数第几个子元素
//p[last()]
//p[last()-1]
//div/p[last()-2]
范围的选择
//option[position()<2]
选择class属性为multi_choice的前3个子元素
//
[@class=‘multi_choice’]/[position()<=3]
选择class属性为multi_choice的后3个子元素
//
[@class=‘multi_choice’]/*[position()>last()-2]
为什么不是 last()-3 呢? 因为

last() 本身代表最后一个元素
last()-1 本身代表倒数第2个元素
last()-2 本身代表倒数第3个元素
组选择、父节点、兄弟节点
xpath也有组选择, 是用 竖线 隔开多个表达式, 比如,要选所有的option元素 和所有的 h4 元素,可以使用
//option | //h4 等同于CSS选择器 option , h4

//[@class=‘single_choice’] | //[@class=‘multi_choice’] 等同于CSS选择器 .single_choice , .multi_choice

选择父节点
xpath可以选择父节点, 这是css做不到的。某个元素的父节点用 /… 表示, 比如,要选择 id 为 china 的节点的父节点,可以这样写 //[@id=‘china’]/… 。
当某个元素没有特征可以直接选择,但是它有子节点有特征, 就可以采用这种方法,先选择子节点,再指定父节点。
还可以继续找上层父节点,比如 //
[@id=‘china’]/…/…/…
兄弟节点选择
前面学过 css选择器,要选择某个节点的后续兄弟节点,用 波浪线, xpath也可以选择 后续 兄弟节点,用这样的语法 following-sibling::
比如,要选择 class 为 single_choice 的元素的所有后续兄弟节点 //[@class=’single_choice’]/following-sibling::, 等同于CSS选择器 .single_choice ~ *
如果,要选择后续节点中的div节点, 就应该这样写 //*[@class=‘single_choice’]/following-sibling::div
xpath还可以选择 前面的 兄弟节点,用这样的语法 preceding-sibling::
比如,要选择 class 为 single_choice 的元素的所有前面的兄弟节点 //[@class=’single_choice’]/preceding-sibling::
而CSS选择器目前还没有方法选择前面的 兄弟节点
要了解更多Xpath选择语法,可以点击这里,打开Xpath选择器参考手册: http://www.w3school.com.cn/xpath/index.asp

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...