Python 2.7 如何处理python/urllib状态代码仍然为200的重定向?

Python 2.7 如何处理python/urllib状态代码仍然为200的重定向?,python-2.7,web-scraping,beautifulsoup,urllib,http-status-code-302,Python 2.7,Web Scraping,Beautifulsoup,Urllib,Http Status Code 302,我在用Python处理某个重定向时遇到问题。我要求一个页面,显然加载并立即重定向到ww1.www.com。我假设是这样的,因为我已经尝试了我知道的返回标题/状态代码的每一种方法,并且总是得到适当的结果(状态代码:200,适当的主机/引用参数,等等) 以下是我所拥有的: from BeautifulSoup import BeautifulSoup import urllib import psycopg2 import psycopg2.extras db = psycopg2.connect

我在用Python处理某个重定向时遇到问题。我要求一个页面,显然加载并立即重定向到ww1.www.com。我假设是这样的,因为我已经尝试了我知道的返回标题/状态代码的每一种方法,并且总是得到适当的结果(状态代码:200,适当的主机/引用参数,等等)

以下是我所拥有的:

from BeautifulSoup import BeautifulSoup
import urllib
import psycopg2
import psycopg2.extras

db = psycopg2.connect(
                     host = 'myIP'
                     database = 'myDATABASE'
                     user = 'myUSERNAME'
                     password = 'myPASSWORD'
                     )

cursor = db.cursor(cursor_factory = psycopg2.extras.RealDictCursor)
cursor.execute("SELECT info FROM table")

for row in cursor:
    url = 'http://www.website.com/' + row['info']
    file_pointer = urllib.urlopen(url)
    html_object = BeautifulSoup(file_pointer)

    if file_pointer.getcode() != 200:
        continue
如果状态代码不等于200,if语句应该阻止执行任何进一步的代码,但是我在本节之后的代码中得到了索引错误,并且在调查提供错误的url后,我发现它重定向时没有给我状态代码:302


有没有想过为什么我会在重定向的同时收到200状态码的响应?(我还尝试了urllib2和httplib的等价物)另外,我如何防止这种情况发生?

一件看起来不正确的事情

html\u object=BeautifulSoup(file\u pointer)
应该对
urlopen
中的数据进行操作,而不是句柄:-so-
html\u object=BeautifulSoup(file\u pointer.read())
是这里需要的

用于调试

如果您还没有安装,请安装-这是一个很好的库,可用于此类用途

然后:


看看这会不会抛出一些令人费解的东西…

@That1Guy是的-Javascript有时对这样的东西来说是一个右后方的痛苦!您可能需要检查页面是否有rel=“canonical”
import requests
for row in cursor:
    page = requests.get('your url')
    for hist in page.history:
        print hist.status_code, hist.url