2013-02-10 31 views
4

我有以下代碼:如何從python urllib的urlopen獲取HTTP返回碼?

f = urllib.urlopen(url) 
html = f.read() 

我想知道的HTTP狀態代碼(HTTP 200,404等),其來源於打開上述網址。

任何人都知道它是如何做到的?

P.S. 我使用python 2.5。

謝謝!

+1

什麼是HTML返回碼?你的意思是HTTP狀態? – 2013-02-10 09:14:06

回答

10

您可以通過urlopen()

url = urllib.urlopen('http://www.stackoverflow.com/') 
code = url.getcode() 
+2

也許這是因爲我使用python 2.5,但我收到以下錯誤消息: AttributeError:addinfourl實例沒有屬性'getcode' – diemacht 2013-02-10 09:11:30

3

getcode()在Python 2.6只添加使用返回的對象的.getcode()方法。據我所知,在2.5中無法從請求本身獲取狀態代碼,但FancyURLopener提供了一組函數,這些函數在某些錯誤代碼上被調用 - 您可以使用它來將狀態代碼保存在某處。我子類它告訴我,當一個404發生

import urllib 

class TellMeAbout404s(urllib.FancyURLopener): 
    def http_error_404(self, url, fp, errcode, errmsg, headers, data=None): 
     print("==== Got a 404") 

opener = TellMeAbout404s() 
f = opener.open("http://www.google.com/sofbewfwl") 
print(f.info()) 

info()提供的HTTP標頭但不是狀態代碼。

相關問題