我正在使用urllib2来访问URL并读取数据。 urlopen调用是尝试除了下面的块之外。我在网站上看到其他问题说他们遇到了这个500错误,但我找不到具体的答案,为什么即使通话成功我们也会得到这500个例外。任何人都可以详细说明或指出遇到它的方法吗?
try:
data = urllib2.urlopen(url).read().split('\n')
except urllib2.HTTPError, e:
print "Could not get data with url {0} due to error code {1}.".format(url,e.code)
except urllib2.URLError, e:
print "Could not get data with url {0} due to reason {1}.".format(url,e.reason)
sys.exit(1)
答案 0 :(得分:1)
HTTP错误500是服务器错误(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)。您应该调查服务器端日志
答案 1 :(得分:0)
您收到服务器端错误。
您需要检查错误(e
)以查看是否有任何关于导致错误的反馈。它通常包含服务器中的一些实际错误数据。并非所有服务器都会返回错误数据,有时它只是在服务器日志上。
如果这是在守护进程上运行,或偶尔运行,你可以编写一些记录e
内容的东西。
您还可以使用pdb.set_trace()
设置断点并自行检查对象。
同样,虽然这条线看起来很棒:
data = urllib2.urlopen(url).read().split('\n')
在调试和故障排除过程中真的很痛苦,使用urllib时会发生很多事。
我建议将它分成几行,如下
url_obj = urllib2.urlopen(url)
data = url_obj.read()
data = data.split('\n')
如果您使用pdb
(pdb.set_trace()
)输入几个断点,则可以代替每个变量。
因为你没有使用自定义开启工具,所以我也只使用requests
库,它只包装urllib并使它不那么可怕。