出现 “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” 错误的问题。