2014-03-31 57 views
0

我正在使用Python 2.7。如何在Python中使用urlopen或urllib2避免基於國家/地區的重定向

我想打開一個網站的URL並從中提取信息。我正在尋找的信息在美國版本的網站(http://www.thewebsite.com)。由於我在加拿大,因此我會自動重定向到加拿大版本的網站(http://ca.thewebsite.com)。我正在尋找解決方案來嘗試避免這種情況。

如果我帶任何瀏覽器(IE,Firefox,Chrome,...)並導航到http://www.thewebsite.com,我將被重定向。該網站提供了一個菜單,訪客可以選擇他想查看的網站的「國家版本」。一旦選擇了美國,我就不再轉向加拿大版本的網站。瀏覽會話中的任何新標籤都是如此。我懷疑這與cookie存儲有關。

我試着用下面的代碼,以防止重定向:

import urllib2 
class RedirectHandler(urllib2.HTTPRedirectHandler): 
    def http_error_302(self, req, fp, code, msg, headers): 
     result = urllib2.HTTPError(req.get_full_url(), code, msg, headers, fp) 
     result.status = code 
     return result 
    http_error_301 = http_error_303 = http_error_307 = http_error_302 

opener = urllib2.build_opener(RedirectHandler()) 
webpage = opener.open('http://www.thewebsite.com') 

,但似乎並沒有因爲這可以事後提取的代碼的唯一位工作:

<html><head></head><body>‹</body></html> 

我的問題的解決方案將是在抓取網站時使用代理,但我想知道是否有任何方法來防止這些重定向使用Python或Python包。

回答

0

我會用機械化,http://wwwsearch.sourceforge.net/mechanize/

你也可以使用

#不要處理刷新重定向 br.set_handle_refresh(假)

其中 'BR' 與關聯的變量打開網頁。機械也有代理支持

+0

謝謝!我設法解決了這個問題,使用CookieJar功能與機械化。 – LaGuille

相關問題