2013-01-31 90 views
0

我使用下面的配方來獲取HTTP響應代碼,但它沒有得到3xx的代碼。如何防止urllib2跟蹤http請求的重定向?

import urllib2 
for url in ["http://entrian.com/", "http://entrian.com/does-not-exist/"]: 
    try: 
     connection = urllib2.urlopen(url) 
     print connection.getcode() 
     connection.close() 
    except urllib2.HTTPError, e: 
     print e.getcode() 

如何禁用urllib2上的重定向處理?

+1

也許[此頁](http://www.diveintopython.net/http_web_services/redirects。 HTML)可能會有所幫助。 – 2013-01-31 12:42:42

回答

4

您可以創建一個子類型HTTPRedirectHandler,以任何您想要的方式處理每個重定向響應代碼。然後您可以使用urllib2.build_opener將您的自定義重定向處理程序構建到打開程序中,並以此方式覆蓋默認的重定向處理程序。

4

這不是一個直接的答案 - 但在這種情況下,你好得多使用requests

import requests 
for url in ["http://entrian.com/", "http://entrian.com/does-not-exist/"]: 
    print requests.head(url).status_code