「HTTPエラー500:内部サーバーエラー」応答を受け取りましたが、エラーHTML内のデータを読み取りたいです。
Python 2.6では、私は通常、次を使用してページを取得します:
import urllib2
url = "http://google.com"
data = urllib2.urlopen(url)
data = data.read()
失敗したURLでこれを使用しようとすると、例外urllib2.HTTPError
が表示されます。
urllib2.HTTPError: HTTP Error 500: Internal Server Error
内部サーバーエラーを返している間に、このようなエラーページ(urllib2
の有無にかかわらず)を取得するにはどうすればよいですか?
Python 3の場合、対応する例外はurllib.error.HTTPError
です。
HTTPError
ファイルのようなオブジェクト 。キャッチして、その内容をread
できます。
try:
resp = urllib2.urlopen(url)
contents = resp.read()
except urllib2.HTTPError, error:
contents = error.read()
500の本文を読みたい場合:
request = urllib2.Request(url, data, headers)
try:
resp = urllib2.urlopen(request)
print resp.read()
except urllib2.HTTPError, error:
print "ERROR: ", error.read()
あなたの場合、リクエストを作成する必要はありません。ただやる
try:
resp = urllib2.urlopen(url)
print resp.read()
except urllib2.HTTPError, error:
print "ERROR: ", error.read()
そのため、urllib2.HTTPErrorをオーバーライドせず、例外を処理するだけです。