问题原因
当使用requests库发送HTTP请求时,服务器可能会返回一个重定向响应。该响应将包含一个新的URL地址,让你向该地址发送下一个请求,以获得要访问的内容。然而,重定向响应的数量是有限制的,当超过预设的最大重定向次数(默认值为30)时,就会抛出“requests.exceptions.TooManyRedirects: {redirect message}”异常。
解决办法
增加重定向次数
可以通过向requests方法传递一个max_redirects
的参数来指定重定向的最大次数,如下所示:
import requests
response = requests.get(url, allow_redirects=True, max_redirects=5)
禁用重定向
如果不希望使用重定向,则可以将allow_redirects
参数设置为False
,禁用请求跟随重定向。这样,如果服务器对请求返回重定向响应,就会在响应中包含重定向的URL地址,而不是发送下一个请求。
import requests
response = requests.get(url, allow_redirects=False)
更新URL地址
当使用requests库时,经常会遇到服务器返回重定向响应时,会出现一些奇怪的URL地址,这些地址可能是需要更新的。因此,你需要手动更新URL地址以解决此类问题。
import requests
response = requests.get(url, allow_redirects=True)
if response.history:
new_url = response.url
在实际情况中,当服务器返回一个重定向响应时,将会在响应的历史记录(response.history)中记录各个URL地址,最后一个URL地址就是重定向的URL地址(response.url)。
总结
以上就是"requests.exceptions.TooManyRedirects: {redirect message} "的原因及解决办法的完整攻略。你可以通过指定重定向次数,禁用重定向或更新URL地址等方式,解决这个问题。在使用requests库开发项目时,应注意预留足够的调试时间。
此文章发布者为:Python技术站作者[metahuber],转载请注明出处:http://pythonjishu.com/python-requests-error-5/