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

  • Post category:Python

首先,当使用Python中的Requests库向一个URL发送请求时,会有一些重定向的情况发生。默认情况下,Requests库会自动跟随重定向。但是,如果重定向的次数超过库的默认次数,就会抛出”requests.exceptions.TooManyRedirects”异常,提示重定向次数过多。

例如以下代码发送请求:

import requests

response = requests.get('http://baidu.com')

如果请求的URL被跳转了超过30次,就会抛出”requests.exceptions.TooManyRedirects”异常。

解决办法:

一种解决办法是增加Requests库的跟随重定向的最大次数。可以通过如下方式设置:

import requests

session = requests.Session()         # 创建一个session对象
session.max_redirects = 50           # 设置最大跳转次数为50
response = session.get('http://baidu.com')

另一种解决办法是关闭跟随重定向的功能,可以通过如下方式设置:

import requests

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

在设置allow_redirects=False后,当URL发生重定向时,Requests库不会自动跳转,而是将跳转信息作为响应的一部分返回,开发者可自行处理跳转信息。

如果需要最佳的用户体验和搜索引擎优化(SEO),建议采用重定向策略,合理设置跟随重定向的次数或者自行处理跳转信息。