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的官方文档:
Source code for requests.exceptions

Python 异常处理

  

版权声明:本文为Urbanears原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。