2009-11-02 28 views
51

我正在使用urllib2通過HTTP獲取頁面。有時,當我的請求包含錯誤時,資源會引發HTTP錯誤400(錯誤請求)。但是,該響應還包含一個提供詳細錯誤消息的XML元素。能夠看到該錯誤而非僅僅由urllib2返回的HTTPError異常將非常方便。Python urllib2:甚至在HTTPError異常期間讀取內容主體?

儘管例外情況,我如何返回文檔內容?

回答

43

您可以將錯誤視爲回覆。

http://www.voidspace.org.uk/python/articles/urllib2.shtml#httperror

當錯誤被返回一個HTTP錯誤代碼 和錯誤頁面提出的服務器 響應。您可以在返回的頁面上使用 HTTPError實例作爲回覆 。這意味着 以及代碼屬性,它也 已閱讀,geturl,和信息,方法。

60
import urllib2 
try: 
    request = urllib2.Request('http://www.somesite.com') 
    response = urllib2.urlopen(req) 
except urllib2.HTTPError as e: 
    error_message = e.read() 
    print error_message