在初学者Python课程中,我使用了Lynda,它说使用.getcode()从url获取http代码,并且可以在读取数据之前用作测试:
webUrl = urllib2.urlopen('http://www.wired.com/tag/magazine-23-05/page/4')
print(str(webUrl.getcode()))
if (webURL.getcode() == 200):
data = webURL.read()
else:
print 'error'
但是,当与上面的404页面一起使用时,它会导致Python退出:Python function terminated unexpectedly: HTTP Error 404: Not Found
,所以看起来这个课程完全错了?
我的问题是究竟是什么.getcode()实际上有用吗?您实际上无法使用它来测试http代码是什么,除非您知道它是什么(或者至少它不是404)。课程错了还是错过了什么?
我的理解是这样做的正确方法是这样的,它根本不使用.getcode()(尽管告诉我是否有更好的方法):
try:
url = urllib2.urlopen('http://www.wired.com/tag/magazine-23-05/page/4')
except urllib2.HTTPError, e:
print e
这根本不使用.getcode()。我误解了.getcode()的观点还是没用?对我来说,一个在专用于打开网址的图书馆中获取网页代码的方法似乎无法处理像返回404这样简单的事情。