timeout参数的使用

在某些网络情况不好或者服务器端异常的情况会出现请求慢或者请求异常的情况,这个时候我们需要给

请求设置一个超时时间,而不是让程序一直在等待结果。写一个简单的例子:

import .requests

response = requests.get('http://baidu.com', timeout=3)

print(response.text)

该例子必须在3秒内返回响应,否则会报错。你可以尝试输入一个错误的url,或者将timeout时间调小,比如0.1,则会出现timeout的报错。

reteying库

在上述例子中,我们讲述了超时报错。在我们的程序中,如果出现了报错,我们应该是进行异常捕获。但是在实际操作中,如果你访问一个网站出现了报错,有可能是网络情况不好,这个时候我们应该是重新请求服务器,甚至是重新请求好几次。那我们在程序中可以做这个操作吗?答案是肯定的,这就是重试,也就是接下来的要讲的retrying库,在使用之前需要自己pip install retrying。写一个简单的例子:

import requests

from retrying import retry

#让被装饰的函数反复执行三次,三次全部报错才会报错,中间又一次正常都不报错

@retry(stop_max_attempt_number=3)

def parse_url(url):

response = requests.get(url, timeout=5)

return response.content.decode()

既然会报错,那我们就需要去捕获异常,接下来我们捕获异常,完善上述的例子。

import requests

from retrying import retry

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}

#让被装饰的函数反复执行三次,三次全部报错才会报错

@retry(stop_max_attempt_number=3)

def parse_url1(url):

print("*"*50)

response = requests.get(url, headers=headers, timeout=5)

return response.content.decode()

def parse_url(url):

try:

html_str = parse_url1(url)

except:

html_str = None

return html_str

if __name__ == '__main__':

print(parse_url('http://www.baidu.com'))

当我输入正确的url地址http://baidu.com时,程序只执行了一次,输出结果如下:

输入正确的url地址,只执行一次.png当我输入错误的url地址www.baidu.com时,程序retrying了3次,输入结果如下:

输入错误的url地址,执行了三次.png

python中timeout什么意思_Python爬虫(五)timeout以及retrying的使用相关推荐

  1. python中scrapy是什么_python爬虫中scrapy组件有哪些?作用是什么?

    最近苹果12的消息一直活跃,连小编这种不是果粉的人都知道了.虽然苹果是一部性能不错的手机,但是它各个零件却是来源于不同的地方,可见再好的成品也是需要不同零件支撑的.那么,python爬虫中scrapy ...

  2. python中的请求方法_Python爬虫HTPP请求方法有哪些

    HTTP请求方法 GET:请求指定的页面信息,并返回实体主体. HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 POST:向指定资源提交数据进行处理请求(例如提交表单或者上 ...

  3. python中xpath使用案例_python爬虫学习笔记:XPath语法和使用示例

    python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历. 选取节点 XPath使用路 ...

  4. python中requests的常用方法_Python爬虫简介(2)——请求库的常用方法及使用,python,入门,二,requests,常见,和,库中,文官,网...

    前言 学习使我快乐,游戏使我伤心.今天rushB,又是白给的一天. HXDM,让我们一起学习requests库的方法和使用,沉浸在代码的世界里.呜呜呜~~ 一.requests库介绍 首先列出requ ...

  5. python中美元人汇率_Python爬虫练习:爬取美元历史汇率

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以上文章来源于小鹏友的数据分析之路,作者 小鹏友 网址:https://chl. ...

  6. python爬视频网站数据_python爬虫基础应用----爬取无反爬视频网站

    一.爬虫简单介绍 爬虫是什么? 爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序. 爬虫程序包括哪些模块? python中的爬虫程序主要包括,re ...

  7. python中oxf2是多少_python 函数基础2

    一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点:1.约束函数的调用者必须按照Kye=value的形式传值. 2,.约束函数的调用者必须用我们指定的Key名. def aut ...

  8. python中doc=parased.getroot()_python实例手册.py

    python实例手册 #encoding:utf8 # 设定编码-支持中文 0 说明 手册制作: 雪松 littlepy www.51reboot.com 更新日期: 2016-01-21 欢迎系统运 ...

  9. python多线程爬取段子_Python爬虫实例-多线程爬虫糗事百科搞笑内涵段子

    学习爬虫,其乐无穷! 今天给大家带来一个爬虫案例,爬取糗事百科搞笑内涵段子. 爬取糗事百科段⼦,假设⻚⾯的 URL 是:http://www.qiushibaike.com/8hr/page/1 一. ...

  10. python中urllib模块安装_python如何安装urllib

    urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib.基本上涵盖了基础的网络请求功能. 该库有四个模块, ...

最新文章

  1. 第八届“数学、计算机与生命科学交叉研究” 青年学者云论坛(5月15日9:00-16:40)...
  2. 国防科技大学教授:殷建平——计算机科学理论的过去、现在与未来
  3. 2012体感发展加速,微软再添新对手
  4. HD-ACM算法专攻系列(3)——Least Common Multiple
  5. 我站在电线杆上,等风把我吹干...
  6. 安卓摄像头 data 转bitmap
  7. Spring事务原理(1),区区一个SpringBoot问题就被干趴下了
  8. Turtlebot3-burger使用时一些注意事项
  9. HTML转PDF(C#---itextsharp--zt
  10. 现身说法:实际业务出发分析百亿数据量下的多表查询优化
  11. intellij快捷键linux,IntelliJ IDEA的几个常用快捷键
  12. yum安装nginx,并配置静态资源服务器
  13. 深入理解Unity刚体(Rigidbody)、碰撞器(Collider)、触发器(Trigger)
  14. AppStore_隐私政策
  15. vcpkg 简明教程
  16. Android+8.0+微信表情,微信8.0版本重大更新!emoji表情包动态化,安卓版也可以下载了...
  17. 宝塔安装RSSHub订阅服务
  18. php栏目一二级排序,灵动标签完美实现当前栏目高亮-支持二级栏目及内容页及栏目排序...
  19. 联想笔记本e43l_联想昭阳e43l
  20. 刘新华老师-沪师经纪

热门文章

  1. 计算机表格填充,Excel表格中数据填充功能的使用方法
  2. Linux之iptables防火墙
  3. 如何用Java写一个企业晨报?我来教你!
  4. 基于DSP的声反馈抑制系统的研究与实现_爱学术——免费下载
  5. 《拥抱机器人时代——Servo杂志中文精华合集》——4.3 理解智能设备
  6. 海底捞无人餐厅上线,万人失业潮又要到来?
  7. 新浪云 连接mysql数据库_新浪云php与java连接MySQL数据库
  8. 苹果CEO乔布斯鲜为人知的15个小秘密
  9. 怎么解决Myeclipse导入项目中文乱码?
  10. 【MODIS数据处理#11】例六:绘制NDVI多年变化趋势空间分布图