爬虫请求链接,有时候会出现请求失败或者等待时间很长的情况,用下面的方法可以一定程度的解决这个问题

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 应用)的更多相关文章

  1. CDN请求失败,请求本地

    方法一: <script src="http://lib.sinaapp.com/js/jquery11/1.8/jquery.min.js"></script& ...

  2. Promise.all请求失败重发功能的实现

    写爬虫时遇到用Promise.all同时请求多个页面,不可避免的会遇到某些请求失败的情况,这时可以实现一个"重发失败请求"的功能. Promise.all(task).then() ...

  3. 工作记录之 [ python请求url ] v s [ java请求url ]

    背景: 模拟浏览器访问web,发送https请求url,为了实验需求需要获取ipv4数据包 由于不做后续的内容整理(有内部平台分析),故只要写几行代码请求发送https请求url列表中的url即可 开 ...

  4. WebApi(四)-Post接口请求失败或接受不到参数(解决方法)

    post方式只能接受一个参数而且必须用FromBody特性标识,所以当没有使用FromBody特性标识的时候就会请求失败,如有添加添加了那访问接口时候参数应传对象不能是key:val的格式否则会接收到 ...

  5. Win10 设备管理器一个USB设备描述符请求失败解决方法

    问题:进入设备管理器,发现[通用串行总线控制器]下有一项带有黄色[!]未知USB设备(设备描述符请求失败). 或者 解决方法如下: 1.点击Windows键 +R或者(点击系统桌面左下角[开始],在开 ...

  6. Python @retry装饰器的使用与实现案例(requests请求失败并重复请求)

    在爬虫代码的编写中,requests请求网页的时候常常请求失败或错误,一般的操作是各种判断状态和超时,需要多次重试请求,这种情况下,如果想优雅的实现功能,可以学习下retrying包下的retry装饰 ...

  7. Jsoup问题---获取http协议请求失败 org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.

    Jsoup问题---获取http协议请求失败 1.问题:用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不 ...

  8. SQL 2008 R2 启动失败 提示 请求失败或服务未及时响应

    为什么启动sql server 配置管理器出现请求失败或服务未及时响应_百度知道 http://zhidao.baidu.com/link?url=ElemzIan6I2CqJsd7-7uk5TV25 ...

  9. python发送post和get请求

    python发送post和get请求 get请求: 使用get方式时,请求数据直接放在url中. 方法一. import urllib import urllib2 url = "http: ...

  10. python 发送post和get请求

    摘自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201231085444250/ 测试用CGI,名字为test.py,放在ap ...

随机推荐

  1. 云主机 vs 轻量型云主机:性能与灵活性的平衡

    本文分享自天翼云开发者社区<云主机 vs 轻量型云主机:性能与灵活性的平衡>,作者:冯****芙 什么是轻量型云主机.什么是云主机? 云主机是云计算的一种基础设施服务模型,它是在云平台上通 ...

  2. Qemu-KVM基本工作原理介绍

    本文分享自天翼云开发者社区<Qemu-KVM基本工作原理介绍>,作者:郑****文 1.KVM与Qemu关系 Qemu本身并不是KVM的一部分,而是一整套完整的虚拟化解决方案,它是纯软件实 ...

  3. Git 忽略文件配置全解析

    Git 忽略文件配置全解析 在Git版本控制系统中,.gitignore文件扮演着至关重要的角色.它允许我们指定哪些文件或目录应该被Git忽略,即不被纳入版本控制之中.这对于避免提交敏感信息.构建产物 ...

  4. FLink自定义Sink,生产的数据导出到mysql

    一.自定义生产数据 https://www.cnblogs.com/robots2/p/16048729.html 二.生产转化数据,导出到mysql 2.1 建表语句 CREATE TABLE `v ...

  5. windows配置maven

    1.下载mavenhttps://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/ 中找到相应的版本2.解压3.配置环境变量MAVEN_HOMED: ...

  6. Vue3+NestJS实现后台权限管理系统上线啦!(附源码及教程)

    最近这段时间工作不忙,想着提升一下自己的技术,沉淀沉淀.于是做了一个开源的后台权限管理系统.因为我本身是一个前端开发,所以前端和服务端都是用的 JS 语言来开发的,前端用的框架是 vue3,后端则用的 ...

  7. 11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行)

    11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行) @ 目录 11. Docker 微服务实战(将项目打包生成镜像,在 Docker 当中作为容器实例运行) ...

  8. Vue3响应式编程三剑客:计算属性、方法与侦听器深度实战指南

    在Vue3开发中,计算属性.方法和侦听器是处理数据逻辑的核心工具.它们各自有不同的作用和适用场景,合理使用这些工具可以显著提升代码的可读性和性能.本篇将深入探讨这三者的定义.使用场景以及实际案例,并通 ...

  9. Deepseek学习随笔(11)--- 普通人如何抓住DeepSeek红利(附网盘链接)

    一.文档简介 这个文档是清华大学新闻与传播学院新媒体研究中心发布的<普通人如何抓住DeepSeek红利>,该文件详细介绍了DeepSeek的功能.应用场景.使用技巧以及如何通过提示词驱动提 ...

  10. autMan奥特曼机器人对接新千寻Pro微信框架详细教程

    文件下载 1.安装指定版本微信 https://www.123865.com/s/3Wd9-q13jH 2.最新千寻pro下载 [点此网盘下载] 框架教程 1.安装上面的指定微信版本,跟最新的千寻框架 ...