Requests报”requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects. “的原因以及解决办法

  • Post category:Python
  1. 原因

“requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects”通常意味着请求被重定向了太多次,达到了最大允许的重定向次数。当你使用requests库发送请求时,有些响应可能会重定向到其他页面,可能是因为旧页面已经不存在了,或者是因为页面链接被更新了。然而,如果服务器没有正确配置重定向头部或者迭代次数太多,Requests就可能会报这个异常。

  1. 解决办法

当你看到这个异常时,你可能需要采取以下方案来解决它:

  • 增加最大重定向次数

代码示例如下:

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以及迭代的次数都是正确的。如果你不确定原因是什么,请尝试使用上述方法来定位并修复问题。