【Python】Selenium切换网页的标签页的写法(全!!!)
在使用selenium做网站爬取测试的时候,我们经常会遇到一些需要点击的元素,才能点击到我们想要进入的页面,
于是我们就要模拟 不断地 点点点击 鼠标的样子。
这个时候网页上就会有很多的标签页,你的浏览器网页标签栏 be like:

那么,怎么切换页面,并返回到上一页呢?
- 打包切换页面的逻辑
def switch_windows(index):#获取当前句current_window_handle = driver.current_window_handleprint(current_window_handle )#获取所有句柄all_handles = driver.window_handlesprint(all_handles )#切换至第二个窗口driver.switch_to.window(all_handles [index])print(driver.title) #获取目前内容页的信息
- 点击按钮跳到下一页 --> 切换到新页面 -->操作新页面内容 --> 返回上一页
#点击按钮,跳转到下一个页面
element=driver.find_element(By.XPATH,input_)
element.click()#切换到最后一个页面-新页面
switch_windows(index=-1)#读取页面的信息
sleep(1)
page_html=driver.page_source
page_soup=BeautifulSoup(page_html,'lxml') #返回首页
switch_windows(index=0)
除了用点击到下一页的方法,也可以模拟标签点开的方法(强推!!!好用)
原理是,网页模拟点开标签,然后把网址输入进去的过程
driver.execute_script("window.open('https://www.google.com')") # 新标签页1
driver.execute_script("window.open('https://www.python.org')") # 新标签页2
- 返回首页以后,我们要把后面不用的其他标签页关闭掉:
# 获取所有标签页的句柄(handles)
all_handles = driver.window_handles # 返回所有标签页的ID列表
homepage_handle = all_handles[0] # 首页通常是第一个标签页# 关闭其他标签页(保留首页)
for handle in all_handles:if handle != homepage_handle: # 如果不是首页driver.switch_to.window(handle) # 切换到该标签页driver.close() # 关闭它# 最后切换回首页
driver.switch_to.window(homepage_handle)print("已关闭其他标签页,仅保留首页")
- 如果不确定在读取页面的时候,是不是读取到自己想要的那个网址,可以使用读取网址的方式判断:
print("当前页面URL:", driver.current_url)
也可以跟自己的目标网址做判断,如果不对的话,则切换到上一个界面
current_url= driver.current_url
if current_url != target_url:switch_windows(index=-2) #比最后一个网址再上一个页面
这部分内容在【返回首页】的代码之前,效果如:

PS:
一些网站的HTML内部会设置一些【点击事件处理属性】,
当用户点击这个元素时,会触发 onclick 中定义的 JavaScript 代码,类似下面的代码。


这种可能就要点击网页上的元素,才能获取网络响应,直接跳转到该网址上,是行不通的,可能会被发现爬虫,然后强制跳转到其他的网页页面上。
这个时候,只能用上面的方法了。
如果有更好的方法,可以解决如上的问题的话,希望大家可以提出来呀,感谢不尽!!
相关文章:
【Python】Selenium切换网页的标签页的写法(全!!!)
在使用selenium做网站爬取测试的时候,我们经常会遇到一些需要点击的元素,才能点击到我们想要进入的页面, 于是我们就要模拟 不断地 点点点击 鼠标的样子。 这个时候网页上就会有很多的标签页,你的浏览器网页标签栏 be like: 那…...
洛谷P1177【模板】排序:十种排序算法全解(1)
扯谈 之前我已经把十大排序算法全讲了一遍(具体详见专栏C排序算法),今天我们来用一道简单的题目总结实战一下。 算法实现 一、桶排序(Bucket Sort) 适用场景:数据范围已知且较小(需根据测试数据调整…...
pytorch 51 GroundingDINO模型导出tensorrt并使用c++进行部署,53ms一张图
本专栏博客第49篇文章分享了将 GroundingDINO模型导出onnx并使用c++进行部署,并尝试将onnx模型转换为trt模型,fp16进行推理,可以发现推理速度提升了一倍。为此对GroundingDINO的trt推理进行调研,发现 在GroundingDINO-TensorRT-and-ONNX-Inference项目中分享了模型导出onnx…...
中间件--ClickHouse-11--部署示例(Linux宿主机部署,Docker容器部署)
一、Linux宿主机部署 1、环境准备 操作系统:推荐使用 CentOS 7/8 或 Ubuntu 18.04/20.04。硬件要求: 至少 2 核 CPU 和 4GB 内存。足够的磁盘空间(根据数据量评估)。CPU需支持SSE4.2指令集(可通过以下命令检查&#…...
DeepSeek和Excel结合生成动态图表
文章目录 一、前言二、3D柱状图案例2.1、pyecharts可视化官网2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、动态调整数据 一、前言 最近在找一些比较炫酷的动态图表,用于日常汇报,于是找到了 DeepseekExcel王牌组合,其等同于动态图…...
[Python入门学习记录(小甲鱼)]第6章 函数
函数就是把代码整理打包的东西 6.1 Python的函数基操 函数的基本操作 6.1.1 创建和调用函数 def myfunc():print(1)print(2)print(3) myfunc() # 输出 1 2 3 带换行 调用时会自动找函数定义6.1.2 函数的参数 def add(num1, num2):print(num1 num2) add(1, 2) # 输出 3…...
Ubuntu20.04 部署llama-factory问题集
llama3 微调教程之 llama factory 的 安装部署与模型微调过程,模型量化和gguf转换。_llamafactory 部署-CSDN博客 1.跟着教程 llama-factory下载不下来 来,试着换源,多试几次,就可以成功了。。。 2.跟着教程,发现无法…...
海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离
引言 随着互联网应用的快速发展,每天产生的聊天记录数量级已经达到了惊人的程度。以2000万条/天为例,一年下来就是大约7.3亿条记录。如此庞大的数据量给数据库的设计和管理带来了前所未有的挑战。本文将探讨如何使用SharingJDBC整合Spring Boot技术来实…...
EAL4+与等保2.0:解读中国网络安全双标准
EAL4与等保2.0:解读中国网络安全双标准 在当今数字化时代,网络安全已成为各个行业不可忽视的重要议题。特别是在金融、政府、医疗等领域,保护信息的安全性和隐私性显得尤为关键。在中国,EAL4和等级保护2.0(简称“等保…...
GreatSQL启动崩溃:jemalloc依赖缺失问题排查
GreatSQL启动崩溃:jemalloc依赖缺失问题排查 故障现象: 之前协助用户安装 GreatSQL 测试环境时,遇到一个 case,数据库初始化时没有报错,但是使用mysqld_safe去启动,会直接 crash ,详情报错如下࿱…...
大语言模型助力 Support Case 分析,提升云服务效率
1. 背景 技术工单(Support Case)是企业在进行云平台操作的时候通常会用到的一种技术支持类型,提供的技术支持通常包括所有的云服务的使用问题、账单问题、限制额度提升等等。对于云平台的管理者而言,对各个 BU 所提的工单进行统计…...
ubuntu磁盘挂载
1、查看磁盘设备及分区 命令:列出所有块设备(磁盘及分区) lsblk 0表示此块未挂载 2、格式化分区 sudo mkfs.ext4 /dev/sdb 注意sdb换成自己的块名称 3、创建挂载点目录 sudo mkdir -p /mnt/data4、永久挂载 sudo blkid /dev…...
在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)
第二部分 测试本地pycharm通过程序连接远程服务器autodl 模型的推理需要借助远程服务器autodl,但是界面的运行是在pycharm中,我的设想是按钮调用一个py文件就好了。 1. 本地运行PyQt5界面。 2. 当需要载入权重时,通过SSH连接到AutodL服务…...
chili3d调试笔记8 打印零件属性 浏览器元素展开
无效, 返回的是节点不是坐标啥的, 找他的属性 把document和selectednote(空集)传给handleshowproperty方法 怎么获得selectnotes和selectnotes的property值 有selectnotes运行这段就行了 明天再搞 ----------------------------…...
新书速览|DeepSeek移动端AI应用开发:基于Android与iOS
《DeepSeek移动端AI应用开发:基于Android与iOS》 1 本书内容 《DeepSeek移动端AI应用开发:基于Android与iOS》深入剖析了DeepSeek平台的架构原理、API调用及开发实践等核心内容,助力读者在Android与iOS移动端高效集成DeepSeek API,打造出契…...
大模型面经 | DeepSpeed中ZeRO-1、ZeRO-2和ZeRO-3的区别是什么?
大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...
Android调用springboot接口上传大字段,偶现接口超时的优化
介绍 最近有个功能,Android通过okhttp上传实体类,实体类包含一个大字段,上传的字符串长度达到300k,偶现接口超时的情况,大概100次有5次,看日志发现数据并没有到达接口,可能在网络传输中就超时了…...
在PyCharm中部署AI模型的完整指南
引言 随着人工智能技术的快速发展,越来越多的开发者开始将AI模型集成到他们的应用程序中。PyCharm作为一款强大的Python IDE,为AI开发提供了出色的支持。本文将详细介绍如何在PyCharm中部署AI模型,从环境配置到最终部署的完整流程。 第一部分:准备工作 1. 安装PyCharm …...
react组件之间如何使用接收到的className(封装一个按钮案例)
带有hover渐变效果 一、父组件 import LineGradientBox from ../line-gradient-box; import styles from ./index.module.scss;<LineGradientBoxfontSize{20}className{styles.btn_height}textSign upwidth"100%"onClick{() > {navigate(/sign-up);}} /> …...
JavaScript 数组常用方法解析
1. concat - 合并数组 语法: const newArray oldArray.concat(value1, value2, ..., arrayN); 作用: 将当前数组与其他数组或值合并,返回一个新数组,原数组不变。 测试案例: const arr1 [1, 2, 3]; const arr2…...
Linux知识--软件管理
1.RPM包 1.1简介 又称为二进制包,无需编译,可以直接使用 1.2工具 1.2.1YUM工具 简介 基于RPM包管理,能够从指定服务器自动下载RPM包并且安装 可以自动处理依赖关系,并且一次性安装所有依赖的软件包,无需一…...
09.传输层协议 ——— TCP协议
文章目录 TCP协议 谈谈可靠性TCP协议格式 序号与确认序号窗口大小六个标志位 确认应答机制(ACK)超时重传机制连接管理机制 三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协议 TCP协…...
chromedp 反反爬设计方案
二、基础防护层实现 1. 浏览器特征伪装 opts : append(chromedp.DefaultExecAllocatorOptions[:],// 禁用自动化特征chromedp.Flag("disable-blink-features", "AutomationControlled"),chromedp.Flag("useAutomationExtension", false),// 随…...
数字化转型“变形记”:中钧科技经营帮如何让企业长出“智慧骨骼”
数字化转型就像给企业安装一个"智慧引擎",而中钧科技的经营帮平台就是这台引擎的智能控制系统。让我们用"人体"来打个比方——当企业的数据、流程、决策像神经脉络般打通,才能真正实现灵活运转。下面就以经营帮的五大核心板块为例&a…...
【问题解决】centos7已经不维护了,如何继续使用yum源?
背景 CentOS 7 已于2024年6月30日停止维护,在停止维护后我们之前配置的国内镜像源大多都是空目录了,即在线国内镜像源不可用,就像下边这样提示: [rootbogon yum.repos.d]# yum install vim 已加载插件:fastestmirror Loading mi…...
Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现
背景 最近在研究了一下 Starrocks的tablet的Rebalance的能力,这里进行记录一下 本文基于 StarRocks 3.3.5 结论 数据的rebalance 主要以两种模式来进行: 按照磁盘的使用率进行移动,如果每个BE的磁盘使用率不足tablet_sched_balance_load_…...
Redis 接收连接
阅读本文前,建议先看:Redis 事件循环(Event Loop)。 Redis 6 支持接收 3 种连接,对应的接收处理器如下: TCP:acceptTcpHandler;TLS:acceptTLSHandler;Unix …...
AGI大模型(12):向量检索之关键字搜索
1 检索的方式有那些 列举两种: 关键字搜索:通过用户输入的关键字来查找文本数据。语义搜索:不仅考虑关键词的匹配,还考虑词汇之间的语义关系,以提供更准确的搜索结果。2 关键字搜索 先看一个最基础的实现 安装模块 pip install redis 不会redis的去看我的redis专题 首…...
【计算机视觉】CV实战项目- Face-and-Emotion-Recognition 人脸情绪识别
Face-and-Emotion-Recognition 项目详细介绍 项目概述项目功能项目目录结构项目运行方式1. 环境准备2. 数据准备3. 模型训练4. 模型运行 常见问题及解决方法1. **安装依赖问题**2. **数据集问题**3. **模型训练问题**4. **模型运行问题** 项目实战建议项目参考文献 项目概述 F…...
基于国产 FPGA+ 龙芯2K1000处理器+翼辉国产操作系统继电保护装置测试装备解决方案
0 引言 近年来,我国自主可控芯片在国家政策和政 府的支持下发展迅速,并在电力、军工、机械、 通信、电子、医疗等领域掀起了国产化替代之 风,但在芯片自主可控和国产化替代方面还有明 显的不足之处。 2022年我国集成电路进口量多 达 5 3…...
