2017-02-14 97 views
1

我曾嘗試在Python的Python TooManyRedirects:超過30重定向

url="http://www.realtor.com/realestateandhomes-search/Pittsburgh_PA/type-single-family-home/price-na-30000/sby-1/" 
r=requests.get(url) 

下面的代碼,但它拋出

File "C:\Users\Dana\AppData\Local\Programs\Python\Python35-32\lib\site-package 
s\requests\sessions.py", line 630, in send 
    history = [resp for resp in gen] if allow_redirects else [] 
    File "C:\Users\Dana\AppData\Local\Programs\Python\Python35-32\lib\site-package 
s\requests\sessions.py", line 630, in <listcomp> 
    history = [resp for resp in gen] if allow_redirects else [] 
    File "C:\Users\Dana\AppData\Local\Programs\Python\Python35-32\lib\site-package 
s\requests\sessions.py", line 111, in resolve_redirects 
    raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, respon 
se=resp) 
requests.exceptions.TooManyRedirects: Exceeded 30 redirects. 

任何幫助,將不勝感激

的eror

回答

3

它只是意味着你的請求得到一個資源這是一個重定向的ponse(你嘗試訪問的頁面現在位於一個新的位置的信息)。 requests庫默認情況下,不會返回此結果,但會嘗試對新位置的另一個請求。它再次返回重定向等。

爲了避免永遠不會出現requests調用,在過程中止前允許實現的重定向次數有限制。

我假設網站上有錯誤,您嘗試請求某些內容,可能是循環重定向。

你可以調整requests庫不遵循重定向,而是返回它們,那麼你就不會得到這個錯誤(當然重定向響應):

response = requests.get(url, allow_redirects=False) 
+0

我一直在使用該信息嘗試並且在此情況下,沒有錯誤,但我嘗試廢料頁面不變量內加載。有沒有一種方法來避免這個錯誤,但也有頁面加載到Python? – Andrei

0

偶爾,不是經常,這可能發生如果你不包含服務器期望的頭部。如果您使用requests .get()中提供的其他選項模仿標頭,有效載荷,用戶代理等,您將不太可能得到此錯誤。

例子:

import requests 

headers = { 
    'Accept-Encoding': 'gzip, deflate, sdch', 
    'Accept-Language': 'en-US,en;q=0.8', 
    'Upgrade-Insecure-Requests': '1', 
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
    'Cache-Control': 'max-age=0', 
    'Connection': 'keep-alive', 
} 

requests.get('http://www.realtor.com/realestateandhomes-search/Pittsburgh_PA/type-single-family-home/price-na-30000/sby-1', headers=headers) 
+0

你能解釋一下/舉一個例子,我該如何模仿標題,有效載荷等。 – Andrei

+0

當然,添加了示例。 –