提前抱歉为初学者提问。我刚刚学习如何在Python中访问Web数据,而我在requests
包中理解异常处理时遇到了问题。
到目前为止,当使用urllib
包访问网络数据时,我将urlopen
调用包装在try / except结构中以捕获错误的URL,如下所示:
import urllib, sys
url = 'https://httpbinTYPO.org/' # Note the typo in my URL
try: uh=urllib.urlopen(url)
except:
print 'Failed to open url.'
sys.exit()
text = uh.read()
print text
这显然是一种粗暴的方式,因为它可以掩盖除坏URL之外的所有问题。
从文档中我收集了一些信息,你可以在使用requests
包时避免使用try / except结构,如下所示:
import requests, sys
url = 'https://httpbinTYPO.org/' # Note the typo in my URL
r = requests.get(url)
if r.raise_for_status() is not None:
print 'Failed to open url.'
sys.exit()
text = r.text
print text
然而,这显然不起作用(抛出错误和追溯)。什么是“正确”(即,简单,优雅,Pythonic)这样做的方式?
答案 0 :(得分:2)
尝试捕获连接错误:
from requests.exceptions import ConnectionError
try:
requests.get('https://httpbinTYPO.org/')
except ConnectionError:
print 'Failed to open url.'
答案 1 :(得分:1)
您可以在关键字 之后指定一种例外。因此,为了捕获来自不良连接的错误,您可以这样做:
import urllib, sys
url = 'https://httpbinTYPO.org/' # Note the typo in my URL
try: uh=urllib.urlopen(url)
except IOError:
print 'Failed to open url.'
sys.exit()
text = uh.read()
print text