如何在站点也发出HTTP错误代码时访问xml响应

时间:2014-05-04 11:05:30

标签: python xml last.fm

以下网址会在浏览器中返回预期的响应: 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

1 个答案:

答案 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()