在使用selenium做网站爬取测试的时候,我们经常会遇到一些需要点击的元素,才能点击到我们想要进入的页面,

于是我们就要模拟 不断地 点点点击 鼠标的样子。

这个时候网页上就会有很多的标签页,你的浏览器网页标签栏 be like:
你的

那么,怎么切换页面,并返回到上一页呢?

  1. 打包切换页面的逻辑
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) #获取目前内容页的信息
  1. 点击按钮跳到下一页 --> 切换到新页面 -->操作新页面内容 --> 返回上一页
#点击按钮,跳转到下一个页面
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
  1. 返回首页以后,我们要把后面不用的其他标签页关闭掉:
# 获取所有标签页的句柄(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("已关闭其他标签页,仅保留首页")
  1. 如果不确定在读取页面的时候,是不是读取到自己想要的那个网址,可以使用读取网址的方式判断:
print("当前页面URL:", driver.current_url)

也可以跟自己的目标网址做判断,如果不对的话,则切换到上一个界面

current_url=    driver.current_url
if current_url != target_url:switch_windows(index=-2) #比最后一个网址再上一个页面

这部分内容在【返回首页】的代码之前,效果如:
在这里插入图片描述

PS:

一些网站的HTML内部会设置一些【点击事件处理属性】,

当用户点击这个元素时,会触发 onclick 中定义的 JavaScript 代码,类似下面的代码。

在这里插入图片描述
在这里插入图片描述

这种可能就要点击网页上的元素,才能获取网络响应,直接跳转到该网址上,是行不通的,可能会被发现爬虫,然后强制跳转到其他的网页页面上。

这个时候,只能用上面的方法了。

如果有更好的方法,可以解决如上的问题的话,希望大家可以提出来呀,感谢不尽!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/76817.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/76817.shtml
英文地址,请注明出处:http://en.pswp.cn/web/76817.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL GTID模式主从同步配置全指南:从配置到故障转移

前言 MySQL主从复制是企业级数据库架构的基础,而GTID(Global Transaction Identifier)模式则是MySQL 5.6版本后推出的革命性复制技术。本文将详细介绍如何配置基于GTID的主从同步,并包含实用的故障转移操作指南。 一、GTID模式核心优势 相比传统基于…

MAC系统下完全卸载Android Studio

删除以下文件 /Applications/Android Studio.app /Users/用户名/Library/Application Support/Google/AndroidStudio2024.2 /Users/用户名/Library/Google/AndroidStudio /Users/用户名/Library/Preferences/com.google.android.studio.plist /Users/用户名/Library/Cache…

<C#>.NET WebAPI 的 FromBody ,FromForm ,FromServices等详细解释

在 .NET 8 Web API 中,[FromBody]、[FromForm]、[FromHeader]、[FromKeyedServices]、[FromQuery]、[FromRoute] 和 [FromServices] 这些都是用于绑定控制器动作方法参数的特性,下面为你详细解释这些特性。 1. [FromBody] 作用:从 HTTP 请求…

# 透视 Linux 内核:Socket 机制的底层架构与运行逻辑深度解析

在由 Linux 操作系统构建的庞大网络生态中,Socket 作为网络通信的核心枢纽,承载着不同主机间应用进程的数据交互重任。无论是日常的网页浏览、在线游戏,还是复杂的分布式系统通信,Socket 都在幕后扮演着关键角色。尽管多数开发者对…

# 利用迁移学习优化食物分类模型:基于ResNet18的实践

利用迁移学习优化食物分类模型:基于ResNet18的实践 在深度学习的众多应用中,图像分类一直是一个热门且具有挑战性的领域。随着研究的深入,我们发现利用预训练模型进行迁移学习是一种非常有效的策略,可以显著提高模型的性能&#…

Excel提取图片并自动上传到文件服务器(OOS),获取文件链接

Excel提取图片并自动上传到接口 在实际项目中,我们可能经常会遇到需要批量从Excel文件(.xlsx)中提取图片并上传到特定接口的场景。今天,我就详细介绍一下如何使用Python实现这一功能,本文会手把手教你搭建一个完整的解…

jmeter利用csv进行参数化和自动断言

1.测试数据 csv测试数据如下(以注册接口为例) 2.jemer参数化csv设置 打开 jmeter,添加好线程组、HTTP信息头管理器、CSV 数据文件设置、注册请求、响应断言、查看结果树 1) CSV 数据文件设置 若 CSV 中数据包含中文,…

腾讯云对象存储m3u8文件使用腾讯播放器播放

参考腾讯云官方文档: 播放器 SDK Demo 体验_腾讯云 重要的一步来了: 登录腾讯云控制台,找到对象存储的存储桶。 此时,再去刷新刚才创建的播放器html文件,即可看到播放画面了。

CSS 美化页面(五)

一、position属性 属性值‌‌描述‌‌应用场景‌static默认定位方式,元素遵循文档流正常排列,top/right/bottom/left 属性无效‌。普通文档流布局,默认布局,无需特殊定位。relative相对定位,相对于元素原本位置进行偏…

Spring MVC 核心注解与文件上传教程

一、RequestBody 注解详解 1. 基本使用 作用:从 HTTP 请求体中获取数据,适用于 POST/PUT 请求。 限制:GET 请求无请求体,不可使用该注解。 示例代码 Controller RequestMapping("/demo01") public class Demo01Cont…

js原型链prototype解释

function Person(){} var personnew Person() console.log(啊啊,Person instanceof Function);//true console.log(,Person.__proto__Function.prototype);//true console.log(,Person.prototype.__proto__ Object.prototype);//true console.log(,Function.prototype.__prot…

为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器

有没有花 20 分钟浏览您的文件夹以找到心中的特定图像或屏幕截图?您并不孤单。 作为工作中的产品经理,我总是淹没在竞争对手产品的屏幕截图、UI 灵感以及白板会议或草图的照片的海洋中。在我的个人生活中,我总是捕捉我在生活中遇到的事物&am…

Kafka消费者端重平衡流程

重平衡的完整流程需要消费者 端和协调者组件共同参与才能完成。我们先从消费者的视角来审视一下重平衡的流程。在消费者端,重平衡分为两个步骤:分别是加入组和等待领导者消费者(Leader Consumer)分配方案。这两个步骤分别对应两类…

2025年五大ETL数据集成工具推荐

ETL工具作为打通数据孤岛的核心引擎,直接影响着企业的决策效率与业务敏捷性。本文精选五款实战型ETL解决方案,从零门槛的国产免费工具到国际大厂企业级平台,助您找到最适合的数据集成利器。 一、谷云科技ETLCloud:国产数据集成工…

PageIndex:构建无需切块向量化的 Agentic RAG

引言 你是否对长篇专业文档的向量数据库检索准确性感到失望?传统的基于向量的RAG系统依赖于语义相似性而非真正的相关性。但在检索中,我们真正需要的是相关性——这需要推理能力。当处理需要领域专业知识和多步推理的专业文档时,相似度搜索常…

ubuntu20.04 远程桌面Xrdp方式

1,Ubuntu 安装Xrdp 方法 1.1,安装xrdp sudo apt install xrdp 1.2,检查xrdp状态 sudo systemctl status xrdp 1.3,加入ssl-cert sudo adduser xrdp ssl-cert 1.4,重启xrdp服务 sudo systemctl restart xrdp 最后…

Java学习手册:RESTful API 设计原则

一、RESTful API 概述 REST(Representational State Transfer)即表述性状态转移,是一种软件架构风格,用于设计网络应用程序。RESTful API 是符合 REST 原则的 Web API,通过使用 HTTP 协议和标准方法(GET、…

Spring Boot 核心注解全解:@SpringBootApplication背后的三剑客

大家好呀!👋 今天我们要聊一个超级重要的Spring Boot话题 - 那个神奇的主类注解SpringBootApplication!很多小伙伴可能每天都在用Spring Boot开发项目,但你真的了解这个注解背后的秘密吗?🤔 别担心&#x…

weibo_har鸿蒙微博分享,单例二次封装,鸿蒙微博,微博登录

weibo_har鸿蒙微博分享,单例二次封装,鸿蒙微博 HarmonyOS 5.0.3 Beta2 SDK,原样包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2) 🏆简介 zyl/weibo_har是微博封装使用,支持原生core使用 &a…

tomcat集成redis实现共享session

中间件&#xff1a;Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包&#xff1a;commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…