- 原因
“requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects”通常意味着请求被重定向了太多次,达到了最大允许的重定向次数。当你使用requests库发送请求时,有些响应可能会重定向到其他页面,可能是因为旧页面已经不存在了,或者是因为页面链接被更新了。然而,如果服务器没有正确配置重定向头部或者迭代次数太多,Requests就可能会报这个异常。
- 解决办法
当你看到这个异常时,你可能需要采取以下方案来解决它:
- 增加最大重定向次数
代码示例如下:
import requests
url = 'http://example.com'
response = requests.get(url, allow_redirects=True, max_redirects=5)
print(response.content)
在这个例子中,我们将max_redirects
值设置成了5。这意味着,当响应被重定向到达到5次时,Requests将停止执行并引发TooManyRedirects
异常。
- 禁用重定向
代码示例如下:
import requests
url = 'http://example.com'
response = requests.get(url, allow_redirects=False)
print(response.content)
通过将allow_redirects
设置为False
,即可禁用重定向。这意味着当响应需要重定向时,Requests将返回带有301或302状态代码的响应对象,而非实际的重定向URL。
- 配置正确的URL和headers
有时候,请求可能会被重定向到错误的URL,从而影响到最终的响应。为了避免这种情况,你可以检查请求的URL和headers是否正确,并确保得到了正确的响应。
代码示例如下:
import requests
url = 'http://example.com'
headers = {'User-Agent': 'My User Agent'}
response = requests.get(url, headers=headers, allow_redirects=True, max_redirects=5)
print(response.content)
在这个例子中,我们设置了User-Agent
header,这是在发送请求时非常常见的一种header。我们还将max_redirects
设置为5,这样可以允许5次重定向。
总的来说,要避免这个异常,你应该确保请求的URL、headers以及迭代的次数都是正确的。如果你不确定原因是什么,请尝试使用上述方法来定位并修复问题。