python,url请求失败重新请求的方法(try、except 应用)
爬虫请求链接,有时候会出现请求失败或者等待时间很长的情况,用下面的方法可以一定程度的解决这个问题
url='https://cl.xxxx.xyz/'+url
try:
response = requests.get(url, headers=headers,timeout=5)#超时设置为3秒
except Exception as e:
for i in range(2): # 循环2次去请求网站
response = requests.get(url, headers=headers,timeout=10)#超时设置为5秒
这里有个问题,一旦超时,就会执行except内的循环,然而循环是必须会执行两遍的
所以,需要找个方案当循环执行一遍且没有问题的时候自动终止
改进,上篇遗留问题,第一次执行即try里的内容超时后会执行except里的内容,但except里内容又是循环多次执行,这样会产生很多无用的重复请求
所以,在循环里面加个判断,同时去掉循环里的timeout
步骤:1、获取循环内请求的响应时间,如果大于指定时间,则继续循环,如果小于指定时间则结束循环,改进后的代码如下
url='https://cl.xxx.xyz/'+url
try:
response = requests.get(url, headers=headers,timeout=15)#超时设置为15秒
resptime_a = response.elapsed.total_seconds()#获取请求响应时间
print("响应时间"+str(resptime_a)+"秒")
except Exception as e:
for i in range(100): # 循环2次去请求网站
response = requests.get(url, headers=headers)
print("循环第"+str(i)+"次")
resptime_b=response.elapsed.total_seconds()
print("响应时间"+str(resptime_b)+"秒")
if resptime_b < 10:#如果响应时间小于10秒,结束循环
break
这里主要用到break语句来中断循环,具体参考https://www.cnblogs.com/becks/p/14081151.html
当然,如果引入判断,那么try...except...即可删除,执行循环获取响应时间,判断时间执行
python,url请求失败重新请求的方法(try、except 应用)的更多相关文章
- CDN请求失败,请求本地
方法一: <script src="http://lib.sinaapp.com/js/jquery11/1.8/jquery.min.js"></script& ...
- Promise.all请求失败重发功能的实现
写爬虫时遇到用Promise.all同时请求多个页面,不可避免的会遇到某些请求失败的情况,这时可以实现一个"重发失败请求"的功能. Promise.all(task).then() ...
- 工作记录之 [ python请求url ] v s [ java请求url ]
背景: 模拟浏览器访问web,发送https请求url,为了实验需求需要获取ipv4数据包 由于不做后续的内容整理(有内部平台分析),故只要写几行代码请求发送https请求url列表中的url即可 开 ...
- WebApi(四)-Post接口请求失败或接受不到参数(解决方法)
post方式只能接受一个参数而且必须用FromBody特性标识,所以当没有使用FromBody特性标识的时候就会请求失败,如有添加添加了那访问接口时候参数应传对象不能是key:val的格式否则会接收到 ...
- Win10 设备管理器一个USB设备描述符请求失败解决方法
问题:进入设备管理器,发现[通用串行总线控制器]下有一项带有黄色[!]未知USB设备(设备描述符请求失败). 或者 解决方法如下: 1.点击Windows键 +R或者(点击系统桌面左下角[开始],在开 ...
- Python @retry装饰器的使用与实现案例(requests请求失败并重复请求)
在爬虫代码的编写中,requests请求网页的时候常常请求失败或错误,一般的操作是各种判断状态和超时,需要多次重试请求,这种情况下,如果想优雅的实现功能,可以学习下retrying包下的retry装饰 ...
- Jsoup问题---获取http协议请求失败 org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.
Jsoup问题---获取http协议请求失败 1.问题:用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不 ...
- SQL 2008 R2 启动失败 提示 请求失败或服务未及时响应
为什么启动sql server 配置管理器出现请求失败或服务未及时响应_百度知道 http://zhidao.baidu.com/link?url=ElemzIan6I2CqJsd7-7uk5TV25 ...
- python发送post和get请求
python发送post和get请求 get请求: 使用get方式时,请求数据直接放在url中. 方法一. import urllib import urllib2 url = "http: ...
- python 发送post和get请求
摘自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201231085444250/ 测试用CGI,名字为test.py,放在ap ...
随机推荐
- 云主机 vs 轻量型云主机:性能与灵活性的平衡
本文分享自天翼云开发者社区<云主机 vs 轻量型云主机:性能与灵活性的平衡>,作者:冯****芙 什么是轻量型云主机.什么是云主机? 云主机是云计算的一种基础设施服务模型,它是在云平台上通 ...
- Qemu-KVM基本工作原理介绍
本文分享自天翼云开发者社区<Qemu-KVM基本工作原理介绍>,作者:郑****文 1.KVM与Qemu关系 Qemu本身并不是KVM的一部分,而是一整套完整的虚拟化解决方案,它是纯软件实 ...
- Git 忽略文件配置全解析
Git 忽略文件配置全解析 在Git版本控制系统中,.gitignore文件扮演着至关重要的角色.它允许我们指定哪些文件或目录应该被Git忽略,即不被纳入版本控制之中.这对于避免提交敏感信息.构建产物 ...
- FLink自定义Sink,生产的数据导出到mysql
一.自定义生产数据 https://www.cnblogs.com/robots2/p/16048729.html 二.生产转化数据,导出到mysql 2.1 建表语句 CREATE TABLE `v ...
- windows配置maven
1.下载mavenhttps://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/ 中找到相应的版本2.解压3.配置环境变量MAVEN_HOMED: ...
- Vue3+NestJS实现后台权限管理系统上线啦!(附源码及教程)
最近这段时间工作不忙,想着提升一下自己的技术,沉淀沉淀.于是做了一个开源的后台权限管理系统.因为我本身是一个前端开发,所以前端和服务端都是用的 JS 语言来开发的,前端用的框架是 vue3,后端则用的 ...
- 11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行)
11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行) @ 目录 11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行) ...
- Vue3响应式编程三剑客:计算属性、方法与侦听器深度实战指南
在Vue3开发中,计算属性.方法和侦听器是处理数据逻辑的核心工具.它们各自有不同的作用和适用场景,合理使用这些工具可以显著提升代码的可读性和性能.本篇将深入探讨这三者的定义.使用场景以及实际案例,并通 ...
- Deepseek学习随笔(11)--- 普通人如何抓住DeepSeek红利(附网盘链接)
一.文档简介 这个文档是清华大学新闻与传播学院新媒体研究中心发布的<普通人如何抓住DeepSeek红利>,该文件详细介绍了DeepSeek的功能.应用场景.使用技巧以及如何通过提示词驱动提 ...
- autMan奥特曼机器人对接新千寻Pro微信框架详细教程
文件下载 1.安装指定版本微信 https://www.123865.com/s/3Wd9-q13jH 2.最新千寻pro下载 [点此网盘下载] 框架教程 1.安装上面的指定微信版本,跟最新的千寻框架 ...