我在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.
非常感谢任何帮助
答案 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
你很好..