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

  • Post category:Python

当使用Requests库发起HTTP请求时,如果目标网站做出了一系列的重定向操作(比如HTTP 301或HTTP 302状态码),Requests库将会默认执行重定向操作,直到达到了一个特定的最大重定向次数(默认为30次)或者达到了用户指定的最大重定向次数。

如果达到了最大重定向次数还没有得到最终的响应结果,Requests库将会抛出requests.exceptions.TooManyRedirects异常,表示重定向次数过多,无法完成请求。

解决这个异常的办法有两种:

  1. 使用max_redirects参数限制最大重定向次数

代码示例:

import requests

url = 'http://www.example.com'
response = requests.get(url, allow_redirects=True, max_redirects=5)

这里的max_redirects参数设置为5,表示最大重定向次数为5次。

  1. 关闭重定向功能

代码示例:

import requests

url = 'http://www.example.com'
response = requests.get(url, allow_redirects=False)

这里的allow_redirects参数设置为False,表示不允许重定向。当然,如果被请求的URL本身就是一个重定向的URL,那么此时将不会得到任何响应数据。

注意,关闭重定向功能可能会导致信息的丢失,还需要开发者根据具体场景来选择是否采取这种处理方式。

另外,不同请求类型的重定向方式可能不同,比如HTTP 302状态码会根据不同的请求方法(GET、POST等)而采取不同的重定向方式。因此,需要根据具体的业务场景去经验地进行调整。