以下网址会在浏览器中返回预期的响应: http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=notonfile99&api_key=8e9de6bd545880f19d2d2032c28992b4
<lfm status="failed">
<error code="6">No user with that name was found</error>
</lfm>
但是由于引发了HTTPError异常,我无法通过以下代码访问Python中的xml: “由于HTTP错误400:错误请求”
import urllib
urlopen('http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=notonfile99&api_key=8e9de6bd545880f19d2d2032c28992b4')
我看到我可以通过使用urlretrieve而不是urlopen来解决这个问题,但是html响应会被写入光盘。
有没有办法,只需使用python v2.7标准库,在那里我可以获取xml响应,而无需从光盘读取它,并做家务管理?
我看到之前在PHP上下文中已经问过这个问题,但我不知道如何将答案应用于Python: DOMDocument load on a page returning 400 Bad Request status
答案 0 :(得分:1)
从此处复制:http://www.voidspace.org.uk/python/articles/urllib2.shtml#httperror
抛出的异常包含错误页面的完整正文:
#!/usr/bin/python2
import urllib2
try:
resp = urllib2.urlopen('http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=notonfile99&api_key=8e9de6bd545880f19d2d2032c28992b4')
except urllib2.HTTPError, e:
print e.code
print e.read()