2014-05-04 16 views
1

以下网址返回浏览器的预期反应: http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=notonfile99&api_key=8e9de6bd545880f19d2d2032c28992b4如何访问XML响应时,网站也发出HTTP错误代码

<lfm status="failed"> 
<error code="6">No user with that name was found</error> 
</lfm> 

但我无法通过下面的代码访问XML在Python作为引发HTTPError异常引发: “由于HTTP错误400:错误的请求”

import urllib 
urlopen('http://ws.audioscrobbler.com/2.0/?method=user.getinfo&user=notonfile99&api_key=8e9de6bd545880f19d2d2032c28992b4') 

我看到,我可以通过使用urlretrieve而非风靡的urlopen这个工作,但HTML响应被写入ŧ o光盘。

有没有办法,只需使用python v2.7标准库,在那里我可以得到xml响应,而无需从光盘读取,并做家务?

我看到这个问题已经在PHP方面问过,但我不知道如何应用答案的Python:从这里 DOMDocument load on a page returning 400 Bad Request status

回答

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() 
+0

感谢作品。谢谢。 – BarryM