当前位置: 首页 > 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("..")   查找当前节点的父节点

相关文章:

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

Xpath (XML Path Language)&#xff0c;是W3C定义的用来在XML文档中选择节点的语言 一、从根目录/开始 有点像Linux的文件查看&#xff0c;/代表根目录&#xff0c;一级一级的查找&#xff0c;直接子节点&#xff0c;相当于css_selector中的>号 /html/body/div/p 二、根据…...

【Kingbase FlySync】命令模式:部署双轨并行,并实现切换同步

【Kingbase FlySync】命令模式:安装部署同步软件&#xff0c;实现Oracle到KES实现同步 双轨并行方案说明一.准备工作二.环境说明三.目标实操(1).准备安装环境Orcle服务器(Oracle40)1.上传所有工具包2.操作系统配置a.增加flysync 用户、设置密码b.配置环境变量c.调整limits.conf…...

echarts 多toolti同时触发图表实现

需求背景解决效果ISQQW代码地址energyChart.vue 需求背景 需要实现同x轴&#xff0c;4个图表的的多图表联动效果&#xff0c;且滑动会触发各个图表的tooltip&#xff0c;即一个图表拥有4个tooltip(目前echarts不支持&#xff0c;我这里绕过了这个问题) 解决效果 ISQQW代码地…...

2023.11.22使用flask做一个简单的图片浏览器

2023.11.22使用flask做一个简单的图片浏览器 功能&#xff1a; 实现图片浏览&#xff08;翻页&#xff09;功能 程序页面&#xff1a; 程序架构&#xff1a; 注意&#xff1a;在flask中常会使用src“{{ url_for(‘static’, filename‘images/’ image) }}”&#xff0c…...

万字解析设计模式之桥接模式、外观模式

一、桥接模式 1.1概述 桥接模式是一种结构型设计模式&#xff0c;它的作用是将抽象部分和实现部分分离开来&#xff0c;使它们能够独立地变化。这样&#xff0c;抽象部分和实现部分可以分别进行扩展&#xff0c;而不会相互影响。它是用组合关系代替继承关系来实现&#xff0c;…...

常用系统函数

$clog2 clogb2 系统函数 $clog2 应返回参数以 2 为底的对数的上限&#xff08;对数四舍五入为整数值&#xff09;。参数可以是整数或任意大小的向量值。参数应被视为无符号值&#xff0c;参数值为 0 将产生结果 0。 该系统函数可用于计算对给定大小的存储器进行寻址所…...

键盘控制ROS车运动

键盘控制ROS车运动 上位机 使用pyseria库与stm32单片机进行通信控制 #!/usr/bin/env python # -*- coding: utf-8 -*import sys, select, termios, tty import serialmsg """ ---------------------------w a x ds w : x a : y s : -x …...

linux上交叉编译qt库

linux上交叉编译qt库 Qt程序从X86平台Linux移植到ARM平台Linux需要做什么 1.在ubuntu上使用qt的源码交叉编译出Qt库 2.将编译好的库拷贝到开发板上并设置相应的环境变量&#xff08;库路径啥的&#xff09; 前两步一劳永逸&#xff0c;做一次就行 3.X86上写好程序代码&…...

Nacos介绍与使用

Nacos介绍与使用 文章目录 Nacos介绍与使用一. 什么是Nacos1 Nacos功能1.1 配置中心1.2 注册中心 2.为什么要使用Nacos 二.Nacos 部署安装1. Nacos 部署方式2. Nacos 安装3. 配置数据源4. 开启控制台授权登录&#xff08;可选&#xff09; 三. Nacos配置中心的使用1. 创建配置信…...

网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪

01 字节跳动 招聘岗位&#xff1a;网络虚拟化高级研发工程师 职责描述&#xff1a; 1、负责字节跳动虚拟网络产品的研发&#xff0c;包括但不局限于网络VPC、NAT、LB负载均衡等&#xff1b; 2、负责字节跳动网络基础平台的研发&#xff0c;包括但不局限于网络控制面系统、容器…...

Git 远程仓库(Github)

目录 添加远程库 查看当前的远程库 提取远程仓库 推送到远程仓库 删除远程仓库 Git 并不像 SVN 那样有个中心服务器。 目前我们使用到的 Git 命令都是在本地执行&#xff0c;如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员…...

Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)

Mybatis Plus分页实现逻辑整理&#xff08;结合芋道整合进行解析&#xff09; 我希望如春天般的你&#xff0c;身着白色的婚纱&#xff0c;向我奔赴而来&#xff0c;我愿意用全世界最温情的目光&#xff0c;朝着你的方向望去——姗姗来迟。 1.背景介绍 https://baomidou.com/p…...

C#编程题分享(2)

输出所有整数的和 让⽤户输⼊整数&#xff0c;如果⽤户输⼊的不是0&#xff0c;就继续输⼊&#xff0c;如果输⼊的是0&#xff0c;结束整数&#xff0c;并输出所有整数的和。 Console.WriteLine("请输⼊⼀个整数&#xff1a;"); int n; int sum 0; do {n Convert…...

Dockerfile基础

前言 知识点整理 Dockerfile 简介 它是一个没有后缀名的文本文档&#xff0c;里面是组合镜像的一些命令&#xff0c;Docker build命令构建镜像时&#xff0c;通过读取Dockerfile中的指令的顺序&#xff08;自上到下&#xff09;自动生成镜像。 Dockerfile 命令 1. FROM 指…...

python+selenium实现web自动化(基础入门)

selenium 是一个自动化操控工具&#xff0c;支持对web端进行自动化操控&#xff0c;从而实现自动化测试。 相关文档&#xff1a; https://python-selenium-zh.readthedocs.io/zh-cn/latest/https://www.selenium.dev/documentation/ 安装配置 环境依赖&#xff1a; python…...

Spring Boot 自动配置

1. Spring Boot 自动配置 Spring Boot的自动配置是其核心特性之一&#xff0c;旨在简化Spring应用程序的配置过程。这个特性通过合理的默认值以及根据类路径和其他因素自动配置Spring Beans来极大地减少了配置的工作量。以下是Spring Boot自动配置的详细讲解&#xff1a; 基本…...

力扣labuladong一刷day13天双指针8道链表题

力扣labuladong一刷day13天双指针7道链表题 一、21. 合并两个有序链表 题目链接&#xff1a;https://leetcode.cn/problems/merge-two-sorted-lists/ 思路&#xff1a;合并只需要新new一个虚拟头结点&#xff0c;然后遍历比较两个链表把较小的那一个顺序接在虚拟头结点后面。…...

【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️链表的中间结点二. ⛳️链表中倒数第k个结点&#x1f4dd;结语 &#x1f4c…...

被环境变量虐过一遍获得的启示

Oracle数据库环境存在两个数据库版本12C及19C&#xff0c;在执行一些操作时需要设置对应版本的环境变量 计划登录12C环境&#xff0c;于是按如下方式设置环境变量 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_HOME/product/12.2.0/dbhome_1 export ORACLE_S…...

关于Hbase的一些问题

HBase 1. RowKey如何设计&#xff0c;设计不好会产生什么后果 唯一原则&#xff1a;在设计上要保持RowKey的唯一性。 因为HBase中的数据是以KV的格式来存储的&#xff0c;所以如果向同一张表中插入RowKey相同的数据&#xff0c;旧的数据会被覆盖掉。 长度原则&#xff1a;建…...

为什么92%的DeepSeek部署项目在上线30天内遭遇Prompt注入?4个被忽视的配置陷阱全曝光

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek prompt注入防护的严峻现实与认知重构 近年来&#xff0c;DeepSeek系列大模型在开源社区广泛部署&#xff0c;但其默认推理接口&#xff08;如/v1/chat/completions&#xff09;对用户输入缺乏…...

用ChatGPT 10分钟生成TikTok爆款脚本:5步工作流+3类高转化话术模板(附Prompt库下载)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT TikTok视频创意 在短视频爆发式增长的今天&#xff0c;TikTok 内容创作者亟需高效、可复用的创意生成机制。ChatGPT 可作为智能脚本引擎&#xff0c;将抽象主题快速转化为结构化、高传播性的视…...

物联网设备安全:硅基硬件防护方案解析

1. 物联网设备安全现状与挑战在智能家居、工业自动化、医疗监测等领域&#xff0c;物联网设备正以惊人的速度普及。根据IDC的调研数据&#xff0c;超过27%的企业在选择物联网供应商时将安全能力作为首要考量标准。然而现实情况是&#xff0c;大多数物联网设备仍在使用软件层面的…...

Win10系统下极点五笔输入法的兼容性配置与TSF框架适配实践

1. 为什么Win10需要特殊配置才能用极点五笔&#xff1f; 很多从Win7升级到Win10的五笔用户都会发现&#xff0c;用了十几年的极点五笔突然变得不听话了。这背后其实藏着微软输入法框架的大变革——从传统的IMM&#xff08;Input Method Manager&#xff09;架构转向了TSF&#…...

HTML5中Canvas文本对齐TextAlign与基线控制

...

智能体开发中利用OpenClaw与Taotoken构建高效工作流

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 智能体开发中利用OpenClaw与Taotoken构建高效工作流 在开发基于大语言的智能体应用时&#xff0c;一个稳定、灵活且易于管理的模型…...

OAI 5G核心网搭建后,如何用Docker命令进行日常运维和故障排查?

OAI 5G核心网Docker运维实战&#xff1a;从日志分析到故障排查 当OAI 5G核心网完成基础部署后&#xff0c;真正的挑战才刚刚开始。面对由多个容器组成的复杂系统&#xff0c;如何快速定位AMF拒绝注册的原因&#xff1f;SMF的PDU会话建立失败该如何排查&#xff1f;本文将分享一…...

AI写专著的技巧与工具:一键生成20万字专著,开启写作新体验!

学术著作的严谨性离不开丰富的资料和数据支撑&#xff0c;但资料的搜集和数据的整合恰恰是撰写过程中最繁琐且耗时的环节。进行研究的学者需要全面搜索国内外的最新文献&#xff0c;确保所选文献既权威又相关&#xff0c;并追溯到原始来源&#xff0c;避免出现二次引用的错误&a…...

OpenClawWatch:本地优先的AI智能体监控工具,实现成本、安全与行为全链路追踪

1. 项目概述&#xff1a;为什么我们需要一个“本地优先”的AI智能体监控工具&#xff1f;如果你正在开发或运行能够自主执行任务的AI智能体&#xff0c;比如自动处理邮件、调用API、操作文件&#xff0c;甚至进行线上交易&#xff0c;那么你肯定经历过这样的焦虑时刻&#xff1…...

nslookup-mcp:基于MCP协议的DNS查询工具部署与实战指南

1. 项目概述&#xff1a;一个为安全与开发场景设计的DNS查询工具如果你经常需要排查网络问题、分析域名配置&#xff0c;或者像我一样&#xff0c;在渗透测试或安全研究时&#xff0c;需要快速、批量地查询DNS记录&#xff0c;那么命令行里的nslookup或dig工具可能已经让你感到…...