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

网络爬虫|Selenium——find_element_by_xpath()的几种方法

Xpath (XML Path Language),是W3C定义的用来在XML文档中选择节点的语言

一、从根目录/开始

有点像Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号

/html/body/div/p 

二、根据元素属性选择

查找具体的元素,必须在前面输入标准开头//,表示从当前节点寻找所有的后代元素

//div/*     div下面的所有的元素//div//p     先在整个文档里查找div,再在div里查找p节点(只要在内部,不限定是否紧跟) ;等价于 css_selector里的('div p')//div/p      p是div的直接子节点; 等价于 css_selector里的('div > p')//*[@style]   查找所有包含style的所有元素,所有的属性要加@;  等价于 css_selector里的('*[style]')//p[@spec='len']  必须要加引号;等价于 css_selector里的("p[spec='len']")//p[@id='kw']    xpath中对于id,class与其他元素一视同仁,没有其他的方法

三. 选择第几个节点

//div/p[2]   选择div下的第二个p节点 ;等价于css_selector里的div>p:nth-of-type(2)  符合p类型的第二个节点//div/*[2]    选择div下第二个元素//div/p[position()=2]   position()=2   指定第二个位置;  等价于上面的 //div/p[2] position()>=2      位置大于等于2position()<2        位置小于2position()!=2    位置不等于2//div/p[last()]    选择div下的倒数第一个p节点; last()倒数第一个//div/p[last()-1]    选择div下的倒数第二个p节点;//div/p[position()=last()]     倒数第一个//div/p[position()=last()-1]     倒数第二个//div/p[position()>=last()-2]     倒数第一个,第二个,第三个

四、组合选择

//p | //button   选择所有的p和button,等价于css_selector里的 p, button//input[@id='kw' and @class='su']     选择id=kw 并且 class=su的input元素

五、兄弟节点的选择

相邻后面的兄弟节点的选择:following-sibling::    两个冒号//div/following-sibling::p    选择div里相邻的p节点相邻前面的哥哥节点的选择:preceding-sibling::后面加上元素标签        # 此方法在css_selector中没有相邻前面的弟弟节点的选择   following-sibling:: 后面加上元素标签 //div/preceding-sibling::p[2]   选择div里前面相邻的第二个节点,不加[2]选择的是前面的所有的p节点

六、选择父节点    

//p[@spec='len']/..    选择p节点的上层节点       此方法在css_selector中没有//p[@spec='len']/../..   上层节点的上层节点

七、在webelement对象里面使用查找Xpath 查找时,必须使用.指明当前节点

food = driver.find_element_by_id('food')eles = food.find_elements_by_xpath(".//p")    .指明当前节点eles = food.find_elements_by_xpath("..")   查找当前节点的父节点
http://www.lryc.cn/news/238206.html

相关文章:

  • 【Kingbase FlySync】命令模式:部署双轨并行,并实现切换同步
  • echarts 多toolti同时触发图表实现
  • 2023.11.22使用flask做一个简单的图片浏览器
  • 万字解析设计模式之桥接模式、外观模式
  • 常用系统函数
  • 键盘控制ROS车运动
  • linux上交叉编译qt库
  • Nacos介绍与使用
  • 网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪
  • Git 远程仓库(Github)
  • Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)
  • C#编程题分享(2)
  • Dockerfile基础
  • python+selenium实现web自动化(基础入门)
  • Spring Boot 自动配置
  • 力扣labuladong一刷day13天双指针8道链表题
  • 【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点
  • 被环境变量虐过一遍获得的启示
  • 关于Hbase的一些问题
  • level=warning msg=“failed to retrieve runc version: signal: segmentation fault“
  • 电力工作记录仪、智能安全帽、智能布控球助力智能电网建设
  • 【CSS】各百分比透明度 opacity 对应的 16 进制颜色值(例如:#FFFFFF80)
  • 有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)
  • Mysql之聚合函数
  • Flutter笔记:拖拽手势
  • 软件运维面试题
  • 代码随想录算法训练营第23期day53|1143.最长公共子序列、1035.不相交的线、53. 最大子序和
  • MySQL 的执行原理(五)
  • 如何快速将txt类型的日志文件转换为excel表格并进行数据分析报表统计图(如:饼图、折线图、柱状图)?
  • 内网穿透的应用-如何在Docker中部署MinIO服务并结合内网穿透实现公网访问本地管理界面