Python爬虫学:urllib(error)の使用


文書ディレクトリ
  • 1. URLError
  • 2. HTTPError

  • 1. URLError
    from urllib import request,error
    url = 'http://ww.ba2idu.com'
    try:
        response = request.urlopen(url)
    except error.URLError as e:
        print(e.reason)
    

    URLErrorクラスはurllibライブラリのerrorモジュールから来て、それはOSErrorクラスから継承して、error異常モジュールのベースクラスで、requestモジュールが発生した異常はすべてこのクラスを捕獲することによって処理することができて、それは1つの属性reasonを持って、エラーの原因を返すことはこの異常を捕獲することによって、プログラムは直接間違いを報告していないで、プログラムの異常の終止を避けることができて、異常を有効に制御しました
    2. HTTPError
    これはURLErrorのサブクラスで、認証要求の失敗などのHTTP要求エラーを処理するのに特化しています.code:HTTPを返すステータスコード(404はページが存在しないことを示し、500はサーバ内部のエラーを示すなど)reason:親クラスと同様に、エラーを返す理由headers:要求ヘッダを返す
    from urllib import request,error
    
    url = 'https://blog.csdn.ne'
    try:
        response = request.urlopen(url)
    except error.HTTPError as e:
        print(e.reason,e.code,e.headers,sep='
    '
    )

    Python爬虫学习:使用urllib(error)_第1张图片 URLErrorはHTTPErrorの親であるため、まず子クラスのエラーをキャプチャしてから親クラスのエラーをキャプチャすることを選択することができるので、上記のコードのより良い書き方は:
    from urllib import request,error
    url = 'https://blog.csdn.ne'
    try:
        response = request.urlopen(url)
    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")

    これにより、HTTPErrorをキャプチャし、エラーステータスコード、理由、headersなどの情報を取得することができます.HTTPError異常でなければURLError異常がキャプチャされ出力エラー原因