web-dev-qa-db-ja.com

Python 3 urllib.request.urlopen

urllib.request.urlopenが200でない場合、どうすればresponse.status_codeからの例外を回避できますか?これで、リクエストのステータスに基づいてURLErrorまたはHTTPErrorが発生します。

Python3基本ライブラリを使用してリクエストを行う他の方法はありますか?

status_code != 200の場合、どうすれば応答ヘッダーを取得できますか?

8

使用する try except、以下のコード:

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
req = Request("http://www.111cn.net /")
try:
    response = urlopen(req)
except HTTPError as e:
    # do something
    print('Error code: ', e.code)
except URLError as e:
    # do something
    print('Reason: ', e.reason)
else:
    # do something
    print('good!')
20
thinkerou

Py3ドキュメントから解決策を見つけました

>>> import http.client
>>> conn = http.client.HTTPConnection("www.python.org")
>>> # Example of an invalid request
>>> conn.request("GET", "/parrot.spam")
>>> r2 = conn.getresponse()
>>> print(r2.status, r2.reason)
404 Not Found
>>> data2 = r2.read()
>>> conn.close()

https://docs.python.org/3/library/http.client.html#examples

0