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

  • Post category:Python

首先需要了解的是,当使用requests库时,请求可能会被重定向到其他页面或链接。默认情况下,requests库将遵循最多30次重定向。当此次数超过了该限制,会出现”requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects.”的报错信息。

造成这种报错的原因:

1.目标网站进行了反爬虫设置,使用了重定向来应对爬虫爬取数据的行为。

2.目标网站进行了页面跳转或者链接跳转的设置。

解决方法:

1.使用max_redirects参数设置最大的重定向次数。

import requests

s = requests.Session()
s.max_redirects = 50  # 设置最大重定向次数
response = s.get('https://www.example.com/')

2.在请求语句中使用allow_redirects参数设为False禁止重定向。

import requests

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

3.分析目标网站的反爬虫策略,了解其重定向逻辑,并制定相应爬取策略。

如果以上方法都无法解决问题,可能需要重写代码,使用其他方法爬取目标网站的数据。

总结:

requests.exceptions.TooManyRedirects: Exceeded {max_redirects} redirects. 的报错信息是由于requests库默认遵循最多30次重定向而导致的。解决方法包括设置最大重定向次数、禁止重定向以及制定相应爬取策略等。当以上方法都无法解决问题时,可能需要重写代码,使用其他方法爬取目标网站的数据。