惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
WordPress大学
WordPress大学
博客园_首页
罗磊的独立博客
D
Docker
N
Netflix TechBlog - Medium
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
D
DataBreaches.Net
I
InfoQ
L
LangChain Blog
GbyAI
GbyAI
V
V2EX
博客园 - 聂微东
P
Proofpoint News Feed
博客园 - 【当耐特】
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
U
Unit 42
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
封装requests自定义请求函数限制最大请求次数-互联网IT百科
2021-11-11 · via 老董笔记

  打开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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会