Python中Requests模块的异常值处理

在我们用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求。

但是在真正的实际使用过程中,我们可能会遇到网络的各种变化,可能会导致请求过程发生各种未知的错误导致程序中断,这就使我们的程序不能很好的去处理错误。所以为了使我们的程序在请求时遇到错误,可以捕获这种错误,就要用到try…except方法,以及了解requests可能发生的各种错误.

以下是request.exceptions下的各种异常错误: RequestException: HTTPError(RequestException)   UnrewindableBodyError(RequestException)   RetryError(RequestException)   ConnectionError(RequestException) ProxyError(ConnectionError) SSLError(ConnectionError) ConnectTimeout(ConnectionError, Timeout) Timeout(RequestException) ReadTimeout URLRequired(RequestException)   TooManyRedirects(RequestException)   MissingSchema(RequestException, ValueError)   InvalidSchema(RequestException,ValueError)   InvalidURL(RequestException,ValueError)   InvalidHeader(RequestException,ValueError)   ChunkedEncodingError(RequestException)   StreamConsumedError(RequestException,TypeError)   ContentDecodingError(RequestException,BaseHTTPError)

在实际应用的过程中,我们可以把请求放在try下,把可能发生的异常用except获取:

while True:     #一直循环,知道访问站点成功
        try:
            #以下except都是用来捕获当requests请求出现异常时,
            # 通过捕获然后等待网络情况的变化,以此来保护程序的不间断运行
            req = requests.get(company_url, headers = headers, timeout = 20)    
            break
        except requests.exceptions.ConnectionError:
            print(ConnectionError -- please wait 3 seconds)
            time.sleep(3)
        except requests.exceptions.ChunkedEncodingError:
            print(ChunkedEncodingError -- please wait 3 seconds)
            time.sleep(3)    
        except:
            print(Unfortunitely -- An Unknow Error Happened, Please wait 3 seconds)
            time.sleep(3)

requests.exceptions的官方文档:

经验分享 程序员 微信小程序 职场和发展