python requests处理重定向的情况
在 Python 的 requests 库中,当向某个 URL 发送请求时,如果服务器返回的响应状态码为 3xx(如 301、302 等),那么就表示该 URL 已被重定向到了另一个 URL。默认情况下,requests 库会自动处理这种重定向,并将最终的响应返回给调用者。
以下是一个简单的示例,演示如何使用 requests 库发送一个带有重定向的 GET 请求:
import requests response = requests.get('https://httpbin.org/redirect-to?url=https://www.python.org/') print(response.url) print(response.history) print(response.status_code)
在上面的示例中,我们向 https://httpbin.org/redirect-to?url=https://www.python.org/ 发送了一个 GET 请求,该 URL 会自动将请求重定向到 https://www.python.org/。在请求完成后,我们打印了响应的 URL、历史重定向记录和状态码。
需要注意的是,requests 库默认会自动处理 30x 的重定向,但可以通过设置 allow_redirects 参数来禁用自动重定向,或者设置 max_redirects 参数来限制重定向的最大次数。例如,如果我们需要禁用自动重定向,可以将 allow_redirects 参数设置为 False:
response = requests.get('https://httpbin.org/redirect-to?url=https://www.python.org/', allow_redirects=False)
如果需要限制重定向的最大次数,可以将 max_redirects 参数设置为一个正整数。例如,以下示例将限制重定向次数为 3 次:
response = requests.get('https://httpbin.org/redirect-to?url=https://www.python.org/', max_redirects=3)
此外,requests 库还提供了一些其他的参数和方法,用于更灵活地处理重定向。例如,可以使用 Response.is_redirect 方法判断响应是否为重定向,并使用 Response.next 方法获取下一个重定向的响应对象。
相关文章