selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况

news2024/11/19 11:26:37

selenium查找网页如何处理网站资源一直加载失败的情况

在这里插入图片描述

selenium获取一个网页,某个网页的资源卡了很久还没有加载成功,如何放弃这个卡的数据,继续往下走

有2钟方式。通常可以采用下面的方式一来处理这种情况

方式一、WebDriverWait

这种方式对于资源比较多比较复杂的网页比较合适,比如有些图片在国外,一直加载不出来。mail.com就是这样

当网页15秒还没有加载完成,此时代码不管有没有找到元素都会继续往下走,:

  • 如果没有找到元素就会抛异常。
  • 如果找到元素,就会点击

这个时候,如果抛异常。可以多尝试即便,直到不抛异常即可继续往下走

    def ClickElementByXpath(self, brower, xPath):
        try:
            brower.implicitly_wait(5)
            self.insert_text_to_last_line(self.log_pass_file, xPath)
            result = WebDriverWait(brower, 15).until(EC.presence_of_element_located((By.XPATH, xPath)))
            result.click()
            return True
        except Exception as e:
            print('exception timeout!!!')
            return False

方式二、find_element

这种方式适合资源能快速加载完成的网站。

find_element会等到网站所有的资源全部加载完成后,再继续往下执行,这样的话更稳定,但对于有些网站资源本身很卡,就会一直卡住了,导致卡非常久,最后脚本运行失败。

def ClickElementByXpath(self, brower, xPath):
    try:
        brower.implicitly_wait(55)
        self.insert_text_to_last_line(self.log_pass_file, xPath)
        #element_input = brower.find_element_by_xpath(xPath)
        element_input = brower.find_element(By.XPATH, xPath)
        element_input.click()
        return True
    except Exception as e:
        print('exception timeout!!!')
        return False

如何实现对元素的点击后,不等页面加载完成,接着往下走

在Selenium中,通常情况下,点击元素后会等待页面加载完成,以确保可以与新加载的内容进行交互。不过,如果你希望在点击元素后不等待页面加载完成,而是立即继续执行后续操作,你可以考虑使用execute_script方法执行JavaScript代码来模拟点击,并在后续操作中处理页面加载。

以下是一个示例,演示如何点击一个元素后不等待页面加载完成,而是继续执行后续操作:

from selenium import webdriver

# 创建 WebDriver 实例
driver = webdriver.Chrome()

# 打开网页
driver.get("https://example.com")

# 找到要点击的元素
element = driver.find_element_by_id("my_element_id")

# 使用 JavaScript 模拟点击
driver.execute_script("arguments[0].click();", element)

# 在这里可以继续执行后续操作,而不用等待页面加载完成

# 关闭 WebDriver
driver.quit()

在上述示例中,我们使用execute_script方法来执行JavaScript代码,将点击操作模拟在元素上。随后,你可以立即继续执行后续操作,而不需要等待页面加载完成。

请注意,这种方法可能会导致在页面尚未加载完全时进行交互,可能会引发一些问题,具体取决于网页的结构和行为。因此,你需要根据具体情况来确定是否适合采用这种方式。如果页面加载的内容对后续操作有影响,你可能需要在点击后等待一段时间,以确保页面的重要部分已加载完成。

是否可以设置超时时间 当元素的点击后 ,不等页面加载完成,接着往下走

在Selenium中,可以使用WebDriverset_page_load_timeout方法来设置页面加载的超时时间,但是这个设置通常是应用于整个页面的加载,而不是单个元素的点击操作。如果你希望在点击元素后不等待页面加载完成,而是继续执行后续操作,可以采取以下方法:

使用set_page_load_timeout:你可以设置一个较短的页面加载超时时间,以便在点击元素后等待较短的时间。然后,可以在捕获超时异常后,继续执行后续操作。

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

# 创建 WebDriver 实例
driver = webdriver.Chrome()

# 设置页面加载超时时间为5秒
driver.set_page_load_timeout(5)

try:
    # 打开网页
    driver.get("https://example.com")
    
    # 找到要点击的元素
    element = driver.find_element_by_id("my_element_id")
    
    # 点击元素
    element.click()
    
except TimeoutException:
    print("页面加载超时")

# 在这里可以继续执行后续操作,而不用等待页面加载完成

# 关闭 WebDriver
driver.quit()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】pandas库

文章目录 简单介绍Series数据结构DataFrame数据结构索引对象基本功能reindex重新索引drop丢弃指定轴上的项索引、选取和过滤用loc和iloc进行选取算法运行数据对齐DataFrame和Series之间的运算函数应用和映射排名和排序 简单介绍 pandas是python进行数据分析中非常重要的一个库…

linux MySQL高阶语句

linux MySQL高阶语句 1、MySQL高级语言1.1order by排序1.2group by分组1.3limit前几行1.4as别名1.5通配符1.6子查询1.7in1.8not in1.9exists 2、视图2.1视图概念2.2功能2.3应用场景2.4视图和表的区别和联系2.5创建视图 3、null值3.1null值3.2null值与空值的区别3.3验证null和空…

MYSQL的CRUD语句(含c++代码)

一.MySQl表的创建与删除 创建语句与删除语句 注意: 主键的数据类型,不可以是变长度类型需要()限制长度,表名字需要使用符号来包围。 二.MySQl数据插入 三.MySQl数据删除 四.MySQl数据更新 使用语句 SET SQL_SAFE_UPDATES 0; show variabl…

Makefile核心(第一节)

文章目录 前言Makefile核心举例讲解结束 前言 曾以为学习过程是痛苦的,其实真正静下心来是美好的,虽然很枯燥,但生活就是这样,不学习还能干吗呢…… ——张顺 makefile是相当重要的,只要你要写大工程,就必须…

十天学完基础数据结构-第三天(数组(Array))

数组的基本概念 数组是一种线性数据结构,用于存储相同数据类型的元素。它具有以下基本概念: 元素:数组中的每个数据项称为元素,可以是整数、浮点数、字符等。 索引:每个元素在数组中都有一个唯一的位置,称…

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用

文章目录 一:函数的简介 1:概念和简介 2:创建一个函数对象 3:调用函数对象 4:函数对象的普通功能 5:使用函数声明来创建一个函数对象 6:使用函数声明创建一个匿名函数 一:函…

2023最新使用微信小程序完成一键授权登录

前言: 使用开发工具:小程序。在我这一篇已经详细介绍了小程序的安装介绍http://t.csdnimg.cn/IEVc0今天我给大家带来的是微信的一键授权登录,保存用户信息,退出的功能!!!希望看完了这篇博客能够…

【python海洋专题十】Cartopy画特定区域的地形等深线图

【python海洋专题十】Cartopy画特定区域的地形等深线图 海洋与大气科学 前几期可以认为关于平面的元素画法🆗了 本期关于特定区域平面画法 全球区域水深图 本期内容 画某元素特定区域的平面图:我有两个方法: 第一个:裁剪nc文…

嵌入式学习笔记(45) NandFlash的接口

9.1.1 Nand的型号与命名 (1)K9F2G08:K9F表示是三星公司的NandFlash系列。2G表示Nand的大小是2Gbit(256MB)。08表示Nand是8位的(数据线有8根)。 (2)Nand命名中可以看出,厂家、系列型号、容量大小、数据位数 9.1.2 Nand的数据位 …

机器视觉工程师,努力方向错了,白费

努力方向错了,白费。 在这个知识经济,知识付费,知识大V横行的时代,知识似乎遍地都是。但你有没有想过,微博里的段子是不是知识?微信里的爆款文章是不是知识?得到App里的音频是不是知识&#xf…

OpenGLES:绘制一个混色旋转的3D球体

一.概述 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形:一个混色旋转的3D球体 二.球体解析 2.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文,就知道要想绘制一个3D图形,首先要做的…

基于Java的校园二手书交易平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

挑战自己,编程你的五子棋:Python+Pygame实践经验分享

引言 五子棋,古老而经典,是一种两人对抗的策略棋类游戏。想要体验制作游戏的乐趣吗?本文将详细指导你如何使用Python语言和Pygame库,一步步打造自己的五子棋游戏! 1. 开始之前:重要准备 首先&#xff0…

使用DNS查询Web服务器IP地址

浏览器并不具备访问网络的功能,其最终是通过操作系统实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要将域名转换为对应的ip地址 域名:www.baidu.com ip地址是一串数字 tcp/ip的网络结…

项目进展(六)-继续学习32位ADC芯片ADS1285

一、数据手册学习 1.1时序图 SPI时序图,这是很重要的一个地方,一定要在代码中将SPI配置成对应的模式。 先放一堆截图在这吧,一些引脚的功能及特性还未看到,等具体了解之后再详细介绍下面几张截图的时序: 1.2 内…

大模型RLHF算法更新换代,DeepMind提出自训练离线强化学习框架ReST

文章链接: https://arxiv.org/abs/2308.08998 大模型(LLMs)爆火的背后,离不开多种不同基础算法技术的支撑,例如基础语言架构Transformer、自回归语言建模、提示学习和指示学习等等。这些技术造就了像GPT-3、PaLM等基座…

问答雕虫1

问题: 现在有如下表 假设按时间顺序,记录中连续出现0.2 0.3 0.5 0.7四条记录记为一次有效数据组,统计一段时间范围内,有效数据组出现的次数,最终计算有效数据组在整个时间范围内的记录的占比。用mysql语句或者函数如何…

uniapp uni.showToast 一闪而过的问题

问题:在页面跳转uni.navigateBack()等操作的前或后,执行uni.showToast,即使代码中设置2000ms的显示时间,也会一闪而过。 解决:用setTimeout延后navigateBack的执行。

css自学框架之选项卡

这一节我们学习切换选项卡,两种切换方式,一种是单击切换选项,一种是鼠标滑动切换,通过参数来控制,切换方法。 一、参数 属性默认值描述tabBar.myth-tab-header span鼠标触发区域tabCon.myth-tab-content主体区域cla…

C语言动态内存管理

🐵本篇文章将会对动态内存管理相关知识进行讲解 1. 为什么要存在动态内存管理❓ 目前我们掌握了两种开辟内存的方式,分别为: int a 10;//存放一个值 int arr[] { 1,2,3,4,5,6,7,8,9,10 };//存放一组数 这两种内存开辟方式都是静态的&#…