您的位置: 网站首页> requests爬虫> 当前文章
封装requests自定义请求函数限制最大请求次数
老董-我爱我家房产SEO2021-11-11172围观,114赞
打开1个网页如果出现卡死或者其他问题,正常的人类会再次尝试打开,也就是说请求1个网页如果出现故障会多试几次。同理,爬虫在抓取数据时候请求1个url也应该设置最大请求次数,万一第1次请求恰逢断网那么第2次请求可能就没事了,这样的程序才比较健壮不会遗漏数据。
在requests里没找到直接设置最大请求次数的方式,所以需要自行封装,封装需要用到递归!比如如下get请求函数最大会请求3次网页。
# -*- coding: utf-8 -*- # 获取源码 def get_html(url,retry=2): try: r = requests.get(url=url,headers=my_header, timeout=10) except requests.exceptions.RequestException as e: # 或者 except Exception as e: print('请求源码失败', url, e) time.sleep(10) if retry > 0: get_html(url, retry - 1) else: html = r.text return html
上述函数执行顺序如下:
1、第1次请求,初始retry=2,请求异常会进入异常处理,retry-1变为1,如果第1次请求成功则不进入异常处理顺利返回html。
2、第2次请求,此时retry=1,请求异常会进入异常处理,retry-1变为0,如果第2次请求成功则不进入异常处理顺利返回html。
3、第3次请求,此时retry=0,请求异常会进入异常处理,此时retry==0停止递归;如果第3次请求成功则不进入异常处理顺利返回html。
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
封装requests自定义请求函数限制最大请求次数文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200