需求
爬取url序列时,难免出现部分url请求超时。我们可以设置requests模块发送请求的timeout时间,超过timeout就停止等待。设置这个timeout,就是防止requests傻等,不让它吊死在一棵树上,还有大片森林等着它呢—-
我们手动访问url时,如果出现访问超时了,我们一般会刷新网站。不抛弃不放弃,是我们冲浪的基本准则~~
python语言,也有类似的做法,使用retrying模块的retry装饰器,就可以达到刷新的效果。(即:程序抛出异常后,发送多次url请求)
怎么做
我们需要用到retry装饰器,达到重发请求的目的。首先得安装retrying模块,安装方法:pip3 install retrying
代码:
1 | import requests |
总结
这个代码的主要思想就是,对异常的判断,分了两步:初级异常出现,retry装饰器帮我们重发请求,如果重发3次请求,异常还是存在,就进入终极异常。触发异常的根本条件是请求的响应状态码不等于200
- 第一步,请求的响应状态码不等于200,这时触发
初级异常
,retry装饰器帮我们重试,最多重发3次请求(因为我设置的重试次数是3) - 第二步,retry装饰器重试3次之后,请求的响应状态码仍然不等于200,这时触发
终极异常
,将请求失败的url响应html设置为None