【发布时间】:2014-05-11 12:54:44
【问题描述】:
我使用的是 Python 2.7。
我想打开一个网站的 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 包来防止此类重定向。
【问题讨论】:
标签: python redirect urllib2 urlopen