zoukankan      html  css  js  c++  java
  • Python3:Requests模块的异常值处理

    Python3: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)

    官方异常处理文档:http://www.python-requests.org/en/master/_modules/requests/exceptions/

  • 相关阅读:
    Python基础学习四 文件操作(二)
    Python基础学习三 文件操作(一)
    Python基础学习三 字符串
    Python基础学习三 字典、元组
    Python基础学习三 list-增删改查、切片、循环、排序
    python基础4文件操作
    Python基础3切片,字符串的方法,for 循环
    python2和Python3的区别(长期更新)
    Python基础1
    python 中的enumerate()函数的用法
  • 原文地址:https://www.cnblogs.com/lizm166/p/9525154.html
Copyright © 2011-2022 走看看