我正在发布GET,并且正在收到503代码。
在Chrome调试器的“网络”标签中,我看到了代码和响应(这就是我要的内容)。
但是,通过Python进行此调用时,引发了HTTPError,我看到了错误代码,但是没有看到响应。
如何捕获通过浏览器得到的响应?
request = urllib2.Request(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'})
r = urllib2.urlopen(request,timeout=30)
答案 0 :(得分:2)
documentation for urllib2.HTTPError说:
尽管HTTPException是一个异常(URLError的子类),但它也可以用作非异常的类似于文件的返回值(与urlopen()返回的结果相同)。
也就是说,如果您抓到HTTPError
,则可以在其上呼叫.read()
。
request = urllib2.Request(url, ...)
try:
r = urllib2.urlopen(request,timeout=30)
except urllib2.HTTPError as he:
print(he.reason)
print(he.read())
raise
顺便说一句,
requests
library使处理HTTP的所有古怪之处和功能更加完善。