python(二) sanurllib2.URLError
阿新 • • 發佈:2018-10-12
money erro 捕獲異常 toc .com 異常 decode news 使用 1.URLError
import urllib2
if name == ‘main‘ :
url = ‘http://www.567.com‘
req = urllib2.Request(url)
try:
response = urllib2.urlopen(req)
#print response
html = response.read().decode(‘utf-8‘)
print html
except urllib2.URLError as e :
print e.reason
結果 :
URLError
[Errno 11004] getaddrinfo failed
2.HTTPError
import urllib2
if name == ‘main‘ :
url = ‘http://money.163.com/stocks/‘
req = urllib2.Request(url)
try:
response = urllib2.urlopen(req)
#html = response.read()
except urllib2.HTTPError as e:
print e.code
結果:404
3,URLError和HTTPError混合使用
????如果想用HTTPError和URLError一起捕獲異常,那麽需要將HTTPError放在URLError的前面,因為HTTPError是URLError的一個子類。如果URLError放在前面,出現HTTP異常會先響應URLError,這樣HTTPError就捕獲不到錯誤信息了。
一種方法:
import urllib2
if name == ‘main‘ :
url = ‘http://news.baidu.net‘ req = urllib2.Request(url) try : response = urllib2.urlopen(req) html = response.read().decode(‘utf-8‘) print html except urllib2.HTTPError as e: print ‘HTTPError‘ print e.code except urllib2.URLError as e: print ‘URLError‘ print e.reason 二種方法使用函數hasattr(): if __name__ == ‘__main__‘ : url = ‘http://www.567.com‘ req = urllib2.Request(url) try: response = urllib2.urlopen(req) html = response.read().decode(‘utf-8‘) print html except urllib2.URLError as e : if hasattr(e,‘code‘) : print ‘HTTPError‘ print e.code elif hasattr(e,‘reason‘) : print ‘URLError‘ print e.reason
python(二) sanurllib2.URLError