urllib.request.urlopen
が200でない場合、どうすればresponse.status_code
からの例外を回避できますか?これで、リクエストのステータスに基づいてURLError
またはHTTPError
が発生します。
Python3基本ライブラリを使用してリクエストを行う他の方法はありますか?
status_code != 200
の場合、どうすれば応答ヘッダーを取得できますか?
使用する 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!')
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()