urllib.urlopenはステータス404でも例外を発生してくれない。
urllib2.urlopenは404で例外を発生してくれるけれど、そのままだと環境変数のプロキシ設定を参照するようで、ちょっと困る場合があった。
というわけで、urllib2.urlopenでプロキシを設定|参照しないようにする方法を調べてみた。
#!/usr/bin/env python
"""Python urllib2 proxy usage sample
"""
import urllib2
#今回はプロキシ設定を空にしておく
#proxies = {'http': 'http://www.example.com:3128/'}
proxies = {}
#プロキシハンドラーを作成して
handler = urllib2.ProxyHandler(proxies)
#プロキシハンドラーを指定してURL Openerを作成して
opener = urllib2.build_opener(handler)
#作成したURL Openerをインストールしてから
urllib2.install_opener(opener)
#普通にurlopenすると例外が発生してくれる
try:
u = urllib2.urlopen('http://www.example.com/404NotFound.html')
print u.read()
except IOError,error:
print error
Pythonカテゴリ作ってみた。