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

  • Post category:Python

出现 “requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects” 错误,是因为在使用Requests库发送请求时,重定向过多,导致超出了最大允许的重定向次数。

通常,服务器会使用重定向来处理一些请求,例如将HTTP请求重定向到HTTPS,或者按照一定规则跳转到另一个页面。重定向可以通过Response对象的 status_code 属性和 history 属性来查看。requests 库默认最大的重定向次数是30次,但是对于某些不规范的网站,可能会导致重定向过多。

要解决这个问题,可以使用以下方法:

1.增加请求次数限制

如果确实需要这些重定向,可以通过增加请求的最大次数限制(例如通过将max_redirects参数传递给requests.get()方法)来解决该问题。例如:

import requests

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

2.关闭自动重定向

另一个解决方案是关闭requests库自动重定向功能,并通过手动重定向实现。这可以通过将allow_redirects参数设置为False来实现。

import requests

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

if response.status_code == 301 or response.status_code == 302:
    new_url = response.headers['location']
    response = requests.get(new_url)

以上代码禁止requests库的自动重定向功能,然后对响应的状态码进行判断,如果是301或302,则手动获取新的URL并重新发送请求。

总之,以上两种方法可以有效解决requests库在请求时出现 “requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects” 错误的问题。