1

我在使用Python處理某個重定向時遇到了問題。我正在請求一個明顯加載並立即重定向到ww1.www.com的頁面。我假設情況是這樣,因爲我已經嘗試了每種我知道的返回標題/狀態代碼的方法,並始終以相應的結果(狀態代碼:200,適當的主機/引用參數等)結束。如何用python/urllib狀態碼仍然處理重定向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 

if語句應該避免任何進一步的代碼,如果狀態代碼不被執行不等於200,但是我得到的代碼索引錯誤本節之後,並經過調查提供錯誤的網址,我發現它重定向沒有給我一個狀態代碼:302.

任何想法,爲什麼我會得到200狀態碼響應,同時仍然重定向? (我也試過與urllib2和httplib等價)另外,我怎樣才能防止這種情況發生?

+0

你可能要檢查網頁中是否有相對=「規範」 – KKa 2014-09-25 16:40:45

回答

2

一兩件事,不看的權利

html_object = BeautifulSoup(file_pointer)應該從urlopen對數據進行操作,而不是手柄: - 如此 - html_object = BeautifulSoup(file_pointer.read())是怎麼在這裏想......

用於調試

安裝requests如果你還沒有 - 這是一個偉大的圖書館用於這些事情。

然後:

import requests 
for row in cursor: 
    page = requests.get('your url') 
    for hist in page.history: 
     print hist.status_code, hist.url 

,看看有沒有拋出任何令人費解......

+1

@ That1Guy耶 - JavaScript的權利有時對於這樣的東西在後方疼痛! – 2012-12-14 21:56:46

相關問題