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

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. ctfshow--web11session置空绕过

    代码审计 点击查看代码 <?php function replaceSpecialChar($strParam){ $regex = "/(select|from|where|join ...

  2. mysql异常处理的收集

    今天在处理mysql的存储过程,判断游标是否到了结尾,结果让返回零行的一个查询触发了,随即从网上查阅资料收集异常异常处理. MySql错误处理(一)- SQL服务器模式 导言:MySql错误处理的基础 ...

  3. 创新突破!天翼云荣膺CCF HPC China 2024高性能计算创新大奖

    近日,第20届CCF全国高性能计算学术年会(CCF HPC China 2024)在武汉隆重召开.CCF HPC China是全球高性能计算领域三大标志性盛会之一,本届大会以"华章廿载 新质 ...

  4. datawhale-leetcode打卡 第013-025题

    搜索旋转排序数组(leetcode-033) 这道题非常简单,基本送分,之前做的代码还能用上 class Solution: def search(self, nums: List[int], tar ...

  5. C++ 创建进程的方法

    1. C++中创建进程的代码示例: // ProcessDemo.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include<windo ...

  6. mybatis - [11] ResultMap结果集映射

    题记部分 用于处理数据库中的字段名和Java实体类中的属性名不一致的问题 数据库中的字段为id,name,pwd.Java实体类属性为id,name,password. 在映射文件中select标签使 ...

  7. Spark - [04] RDD编程

    题记部分 一.RDD编程模型   在 Spark 中,RDD 被表示为对象,通过对象上的方法调用来对 RDD 进行转换.经过一系列的 transformations 定义 RDD 之后,就可以调用 a ...

  8. Kettle - 简介

    ETL简介 Kettle简介 transformation 和 job的区别 Kettle 的核心组件 Kettle 特点 Kettle 的目录说明 Kettle 的文件说明 ETL简介 ETL,Ex ...

  9. HttpClient 进行soap请求

    当你在使用C#的HttpClient进行SOAP请求时,确保你的代码类似于以下示例: using System; using System.Net.Http; using System.Text; u ...

  10. xss学习及xss-lab解题记录

    什么是XSS(跨站脚本攻击) SQL注入是服务端将用户输入的数据当成SQL代码去执行 XSS可以理解为服务端把用户输入的数据当成前端代码去执行 前端代码->主要是js代码 两个关键条件: 第一个 ...