2017-02-14 26 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

当然,添加了示例。 –