파충류 request 모듈 이상 처리

3397 단어 python파충
하나. URLError
1 코드 
'''
URLError   urllib  error  ,    OSError , error       ,
 request             URLError    。
       reason,        。
'''
from urllib import request, error
try:
    response = request.urlopen('http://cuiqingcai.com/index.htm')
except error.URLError as e:
    print(e.reason)

2 실행 결과
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/3_1_2.py
Not Found

3 설명 하 다.
프로그램 이 직접 오 류 를 보고 하지 않 고 위 와 같은 내용 을 출력 했다. 이렇게 하면 위 와 같은 조작 을 통 해 우 리 는 프로그램 이 이상 하 게 종료 되 는 것 을 피 할 수 있 고 이상 하 게 효과 적 인 처 리 를 받 을 수 있다.
둘째. HTTPError
1 눈여겨보다
HTTP Error 는 URLError 의 하위 클래스 로 인증 요청 실패 등 HTTP 요청 오 류 를 처리 하 는 데 사 용 됩 니 다.그것 은 다음 과 같은 세 가지 속성 이 있다.
  • code: HTTP 상태 코드 를 되 돌려 줍 니 다. 예 를 들 어 404 는 웹 페이지 가 존재 하지 않 음 을 나타 내 고 500 은 서버 내부 오류 등 을 표시 합 니 다.
  • reason: 부모 클래스 와 마찬가지 로 잘못된 원인 을 되 돌려 줍 니 다.
  • headers: 요청 헤드 를 되 돌려 줍 니 다.

  • 2 실전 코드
    from urllib import request,error
    try:
        response = request.urlopen('http://cuiqingcai.com/index.htm')
    except error.HTTPError as e:
        print(e.reason, e.code, e.headers, sep='
    ') 3

    3 실전 결과
    E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/3_1_2.py
    Not Found
    404
    Server: nginx/1.10.3 (Ubuntu)
    Date: Mon, 07 Jan 2019 13:32:06 GMT
    Content-Type: text/html; charset=UTF-8
    Transfer-Encoding: chunked
    Connection: close
    Vary: Cookie
    Expires: Wed, 11 Jan 1984 05:00:00 GMT
    Cache-Control: no-cache, must-revalidate, max-age=0
    Link: ; rel="https://api.w.org/"

    4 실전 설명
    여전히 같은 주소 입 니 다. HTTP Error 이상 을 캡 처 하여 reason, code, headers 속성 을 출력 합 니 다.
    5 실전 2 코드
    '''
      URLError HTTPError   ,              ,         
              HTTPError,         、  、headers   。
        HTTPError  ,    URLError  ,      。
      , else        。             。
    '''
    from urllib import request, error
    
    try:
        response = request.urlopen('http://cuiqingcai.com/index.htm')
    except error.HTTPError as e:
        print(e.reason, e.code, e.headers, sep='
    ') except error.URLError as e: print(e.reason) else: print('Request Successfully')

    6 실전 2 운행 결과
    E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/3_1_2.py
    Not Found
    404
    Server: nginx/1.10.3 (Ubuntu)
    Date: Mon, 07 Jan 2019 13:36:21 GMT
    Content-Type: text/html; charset=UTF-8
    Transfer-Encoding: chunked
    Connection: close
    Vary: Cookie
    Expires: Wed, 11 Jan 1984 05:00:00 GMT
    Cache-Control: no-cache, must-revalidate, max-age=0
    Link: ; rel="https://api.w.org/"

    7 실전 3 코드
    '''
       ,reason            ,        。
                     timeout  
    '''
    import socket
    import urllib.request
    import urllib.error
    
    try:
        response = urllib.request.urlopen('https://www.baidu.com', timeout=0.01)
    except urllib.error.URLError as e:
        print(type(e.reason))
        if isinstance(e.reason, socket.timeout):
            print('TIME OUT')

    8 실전 3 운행 결과
    E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/3_1_2.py
    
    TIME OUT

    9 실전 3 설명
    reason 속성의 결 과 는 socket. timeout 류 임 을 발견 할 수 있 습 니 다.그래서 여기 서 우 리 는 isinstance () 방법 으로 그의 유형 을 판단 하고 더욱 상세 한 이상 판단 을 할 수 있다.
     
     

    좋은 웹페이지 즐겨찾기