多层次应对HTTPS网站超时:selenium.common.exceptions.TimeoutException

news/2024/5/21 16:23:32/文章来源:https://blog.csdn.net/qq_21264377/article/details/117134085

现在网络越来越普及,带宽速度普遍也有较大提升。伴随网络的普及,同时快速增长的还有网民的数量和网络流量。网站超时响应的“通病”,仍然是无法完全避免的。尤其是在网络流量高峰期访问HTTPS网站,使用类似Selenium的浏览器内核驱动driver方案过程中,这类问题的处理是关键。下面以Selenium WebDriver和Firefox为例子,介绍如何多层次应对网站超时响应的问题。

初始化全局超时配置参数,设置WebDriver的页面加载和脚本执行超时限制。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as ECS
from selenium.webdriver.support.wait import WebDriverWait
import traceback
import timeclass WebEngine:#...def config(self):self.engine=webdriver.Firefox()#设置页面加载最大时限self.engine.set_page_load_timeout(10)#脚本执行最大时限self.engine.set_script_timeout(10)

使用while循环有限次数尝试首次超时意外的重置连接。

def run(self):retry=0# 手动控制是否关闭flag=Truepageend=Falsewhile retry<3 and flag and not pageend:try:retry+=1    #...self.dosomething()except:#...

在while循环内,单独捕获WebDriver控制内核驱动geckodriver加载网页超时的异常exception。

def dosomething(self):try:self.engine.get(url)#最久等待5秒						self.engine.implicitly_wait(5)				except:#...self.continuetodosomething()self.pagingandrepeatabove()

在while循环内,使用WebDriverWait等待指定页面元素加载。如果定位页面元素超时,则被while循环体内的try-except捕捉;若无异常exception发生,而定位的元素不符合逻辑,通过while循环重置连接。

def continuetodosomething(self):by=By.IDtarget='content'wait=WebDriverWait(self.engine, 5)targetelement=wait.until(ECS.presence_of_element_located((by, target)))if None==targetelement or []==targetelement:#置于此处仅为方便描述过程continuelasturl=self.engine.current_url

通过点击元素事件的翻页过程和重复上述业务逻辑。

def pagingandrepeatabove(self):maxpages=100pager=1maxclicks=3clicks=0internaltry=0while not pageend and pager<=maxpages and internaltry<3:								clicks=0clickok=True#最大点击次数		while last==self.engine.current_url and clickok and clicks<maxclicks:try:clicks+=1clickelement=self.engine.find_element(clickby, clicktarget)if clickelement==None or clickelement==[]:print('url', self.engine.current_url, 'no click element')continue#修正以下三行缩进问题,于2021/6/8 Tue.clickelement.click()time.sleep(.1)clickok=Falseexcept TimeoutException:#修正以下两行缩进问题,于2021/6/8 Tue.print('url', self.engine.current_url, 'loading page time out.')clickok=lasturl==self.engine.current_urlexcept Exception:#修正以下两行缩进问题,于2021/6/8 Tue.traceback.print_exc()print('url', self.engine.current_url, 'click exception')time.sleep(.899)if clickok or clicks>=maxclicks:print('url', self.engine.current_url, 'maxclick')#最大尝试重置连接次数internaltry+=1            continuetargetelement=wait.until(ECS.presence_of_element_located((by, target)))if None==targetelement or []==targetelement:internaltry+=1continuelasturl=self.engine.current_url

以CSDN为目标进行测试:

Timeout loading page exception

Test example: access to csdn

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

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

相关文章

阿里云轻量服务器部署PHP网站(基于Lamp)

一&#xff1a;首先登陆阿里云账户购买轻量服务器&#xff08;这里就不详细介绍啦&#xff09;【轻量服务器会提供PHP,Apache,Mysql,不需要我们自己安装&#xff0c;方便很多】 如果是选择阿里云ecs服务器的话可以参考&#xff1a;https://blog.csdn.net/qiaosym/article/deta…

[转载]使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

访问GitHub下载最新源码&#xff1a;https://github.com/gaussic/Sp... 文章已针对IDEA 2016做了一定的更新&#xff0c;部分更新较为重要&#xff0c;请重新阅读文章并下载最新源码。另外&#xff1a;文中的附图部分仍然为旧版本&#xff0c;请参照自身版本进行配置。 前言 由…

ASP.NET 2.0中轻松实现网站换肤

&#xff1a; 查看个人网站 查看详细资料 &#xff1c;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&#xff1e; &#xff1c;html xmlns"http://www.w3.org/1999/xh…

JQuery 的跨域方法 可跨任意网站

因发现有不少博友发园内短信问及JS的跨域问题&#xff0c;我想很多程序员的脑海里面还认为JS是不能跨域的&#xff0c;其实这是一个错误的观点&#xff1b;有很多人在网上找其解决方法&#xff0c;教其用IFRAME去解决的文章很多&#xff0c;真有那么复杂吗&#xff1f;其实很简…

推荐一个可以往blog里面加入旅行线路图的travel map网站

今天无意中发现这个网站&#xff0c;Free Travel Map Widget&#xff0c;可以很方便的做一个travel map&#xff0c;然后生成html代码放到blog里面。效果可以看看我之前的泰国和欧洲的blog更新&#xff0c;加了map。转载于:https://www.cnblogs.com/fresky/archive/2010/11/03/…

高性能网站建设之减少Http连接数

关于CSS背景图合并工具&#xff0c;请大家参看随笔&#xff1a;Css背景图合并工具功能增强&#xff08;V0.1&#xff09; 在对大访问量网站进行性能优化时&#xff0c;其中有一点是尽量减少http连接数&#xff0c;道理很明了&#xff0c;减少了单个PV的http连接数&#xff0c;…

通过脚本方式导出SharePoint网站集用户及其角色列表

这是课堂上的一个例子&#xff0c;分享出来给大家参考用。如果你管理一个或者多个网站集&#xff0c;那么这个脚本将有助于你快速地了解用户信息。 管理员们&#xff0c;懂点脚本还是很有用的哦&#xff0c;呵呵 将下面的脚本保存为一个ps1文件function Get-UsersWebPermission…

php与mysql网站开发..._Mysql 与 php动态网站开发 入门教程,mysql网站开发_PHP教程...

Mysql 与 php动态网站开发 入门教程&#xff0c;mysql网站开发这个系列的教程由表单开始写&#xff0c;因为表单可以把数据库和web 之间的交互表现得很明显。提交表单 &#xff0c;数据库记录注册信息。本教程属于基础教程。大神请略过。对于php和mysql之间的稳固性很受程序员的…

linode服务器登录网站,linode 服务器

linode 服务器 内容精选换一换云服务器组是对云服务器的一种逻辑划分&#xff0c;云服务器组中的弹性云服务器遵从同一策略。当前仅支持反亲和性&#xff0c;即同一云服务器组中的弹性云服务器分散地创建在不同的主机上&#xff0c;提高业务的可靠性。您可以使用云服务器组将业…

黑人抬棺html网站源码

黑人抬棺html源码 成品地址&#xff1a;https://www.52fenxiang.top/hrtg/ 源码下载地址&#xff1a;https://www.52fenxiang.top/thread-448-1-1.html

用DIV+CSS的网页布局对SEO的好处

为什么80%的码农都做不了架构师&#xff1f;>>> DIVCSS是网站标准&#xff08;或称“WEB标准”&#xff09;中常用术语之一&#xff0c;通常为了说明与HTML网页设计语言中的表格&#xff08;table&#xff09;定位方式的区别&#xff0c;因为XHTML网站设计标准中&a…

最新70佳单页网站设计案例欣赏(下篇)

单页网站是指只有一个页面的网站&#xff0c;这种形式的网站曾经非常流行&#xff0c;现在依然有很多人喜欢。不过&#xff0c;并不是每个网站都适合做成单页&#xff0c;一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

在线压缩图片网站源码

今天分享给小伙伴一份在线压缩图片的网站源码&#xff0c;也算是比较实用的一份源码&#xff0c;测试地址我会贴在【效果展示】段落下面&#xff0c;喜欢的小伙伴自行下载吧。 #效果展示 效果展示&#xff1a;图片在线压缩效果展示 来自&#xff1a;12580code源码站

表白网站源码-html源码

#源码介绍 一份表白网站源码&#xff0c;里面用到的一些小技巧还是可以学习的&#xff0c;需要用的的小伙伴可以拿去用哈&#xff0c;下载完成后打开index.html&#xff0c;然后修改文本和修改图片就可以啦&#xff0c;小二在这祝你们成功哦&#xff08;哈哈哈哈哈哈&#xff0…

对SEO优化有一定作用的DIV+CSS命名规则

为什么80%的码农都做不了架构师&#xff1f;>>> SEO(搜索引擎优化)有很多工作要做&#xff0c;其中对代码的优化是一个很关键的步骤。为了更加符合SEO的规范&#xff0c;下面中部IT网将对目前流行的CSSDIV的命名规则整理如下&#xff1a; 页头:header 登录条:login…

CJC(一): ToStringBuilder两种方法用法优缺点及一个问题 - rmn190 - ITeye技术网站

CJC(一): ToStringBuilder两种方法用法优缺点及一个问题 - rmn190 - ITeye技术网站CJC(一): ToStringBuilder两种方法用法优缺点及一个问题 博客分类&#xff1a;Source Codes Study设计模式F#Security CJC是Common Java Cookbook的缩写, 这是一本介绍ApacheCommon开源项目的电…

大型网站架构演变的知识体系

之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感觉有不少同学都很难明白为什么…

大流量网站的底层系统架构

为什么80%的码农都做不了架构师&#xff1f;>>> 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c; 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据…

windows8 安装IIS 和 添加网站(转)

Internet Information Services&#xff08;IIS&#xff0c;互联网信息服务&#xff09;&#xff0c;是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包&#xff0c;随后内置在Windows 2000、Windows XP Professional和Windows Serv…

如何在IIS6,7中部署ASP.NET网站

原文地址为&#xff1a; 如何在IIS6,7中部署ASP.NET网站在我的第一篇博客中&#xff0c;我发布过一个示例项目&#xff0c;主要演示了我的我的AJAX框架和我的通用数据访问层。虽然在当初我认为我已考虑地比较周全了&#xff0c;而且还提供了足够的说明文档&#xff0c;但在发布…