Python TooManyRedirects:超过30个重定向

时间:2017-02-14 22:49:11

标签: python python-3.x python-requests

我在Python中尝试了以下代码

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.

非常感谢任何帮助

3 个答案:

答案 0 :(得分:4)

这只是意味着您的请求得到了一个重定向响应(您尝试访问的页面现在位于新位置的信息)。 requests库默认情况下理解这一点,并且不会返回此结果,而是尝试另一个新位置请求。这再次返回了重定向等等。

为避免永远不会退出requests来电,在流程中止前允许的重定向次数有限制。

我认为您尝试向网站请求某些内容时出现错误,可能是循环重定向。

您可以调整requests库以不遵循重定向但返回它们,那么您将不会收到此错误(但当然会重定向响应):

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

答案 1 :(得分:2)

有时,如果您不包含服务器所期望的标头,则可能会发生这种情况。如果您使用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)

答案 2 :(得分:0)

Requests\sessions.py

更改s elf.max_redirects

的值

你很好..