防止";“隐藏的”;在Python中使用urlopen()重定向

防止";“隐藏的”;在Python中使用urlopen()重定向,python,beautifulsoup,urllib,urlopen,Python,Beautifulsoup,Urllib,Urlopen,我正在使用BeautifulSoup进行网页抓取,在使用urlopen时,我遇到了与特定类型网站相关的问题。网站上的每个项目都有自己独特的页面,项目有不同的格式(例如:500毫升、1升、2升等) 当我使用Internet浏览器打开产品的URL(www.example.com/product1)时,我会看到一张500 mL格式的图片、有关它的信息(价格、数量、味道等)以及该特定项目可用的所有其他格式的列表。如果单击另一种格式(例如:1L),则图片和有关该项目的信息将发生更改,但浏览器顶部的URL将

我正在使用BeautifulSoup进行网页抓取,在使用urlopen时,我遇到了与特定类型网站相关的问题。网站上的每个项目都有自己独特的页面,项目有不同的格式(例如:500毫升、1升、2升等)

当我使用Internet浏览器打开产品的URL(www.example.com/product1)时,我会看到一张500 mL格式的图片、有关它的信息(价格、数量、味道等)以及该特定项目可用的所有其他格式的列表。如果单击另一种格式(例如:1L),则图片和有关该项目的信息将发生更改,但浏览器顶部的URL将保持不变(www.example.com/product1)。但是,通过检查页面的HTML代码,我知道所有格式都有自己的唯一URL(500 mL:www.example.com/product1/123;1L:www.example.com/product1/456,…)。在Internet浏览器中使用1L格式的唯一URL时,我会自动重定向到www.example.com/product1页面,但页面上显示的图片和信息与1L格式相对应。HTML代码还包含我需要的关于1L格式的信息

当我使用urlopen打开这些独特的URL时,问题就出现了

from bs4 import BeautifulSoup 
from urllib import urlopen
webpage = urlopen('www.example.com/product1/456')
soup=BeautifulSoup(webpage)
print soup    
中包含的信息与使用我的Internet浏览器显示的唯一URL:www.example.com/product1/456的信息不一致。它为我提供了关于默认情况下在www.example.com/product1上显示的项目格式的信息,该格式始终为500 mL格式


是否有任何方法可以阻止此重定向,从而允许我使用BeautifulSoup捕获唯一URL的HTML代码中包含的信息?

。您确定没有涉及javascript或框架吗?它工作得非常好。非常感谢你的帮助falsetru,我真的很感激。
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.example.com/product1/456')
...