我正在使用Python 2.7。
我想打开网站的网址并从中提取信息。我要查找的信息是在美国版本的网站(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 :(得分:0)
我会使用mechanize,http://wwwsearch.sourceforge.net/mechanize/
你可以使用
#不要处理刷新重定向 br.set_handle_refresh(假)
哪里&#39; br&#39;是与打开的网页相关联的变量。 Mechanize还有代理支持