httplib を使用して http 応答コードを確認できませんでした。200 の場合、ページは有効です。それ以外 (404 など) またはエラーの場合は無効です。
次の質問を参照してください: URL から HTTP 応答コードを取得する最良の方法は何ですか?
アップデート:
あなたのコメントに基づいて、あなたの問題はエラーの処理方法にあるようです。IOError の問題のみを処理しています。あなたの場合、次のように切り替えることで、すべてのエラーを個別に処理できます。
except:
return index()
http_default_error をオーバーライドして、独自の例外ハンドラを作成することもできます。詳細については、urllib.urlretrieveで 404 エラーをキャッチする方法を参照してください。
または、特定のエラーがある urllib2 に切り替えることができます。次に、urllib2 がスローする特定のエラーを次のように処理できます。
from urllib2 import Request, urlopen, URLError
req = Request('http://jfvbhsjdfvbs.com')
try:
response = urlopen(req)
except URLError, e:
if hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ', e.reason
elif hasattr(e, 'code'):
print 'The server couldn\'t fulfill the request.'
print 'Error code: ', e.code
else:
print 'URL is good!'
上記のコードは次を返します。
We failed to reach a server.
Reason: [Errno 61] Connection refused
各例外クラスの詳細は、urllib.error API ドキュメントに含まれています。
あなたが何をしようとしているのか正確にはわからないので、これをコードに挿入する方法が正確にはわかりませんが、IOError は urllib によってスローされた例外を処理しません。