我正在使用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包。
謝謝!我設法解決了這個問題,使用CookieJar功能與機械化。 – LaGuille