使用 Python 请求检索重定向的 URL
Requests 是一个用于发送 HTTP 请求的流行 Python 库,允许用户通过设置allow_redirects 来处理重定向参数为 True。虽然这解决了自动重定向的问题,但它会让您不知道目标 URL。这个问题解决了如何在一系列重定向后获取最终的URL。
解决方案在于response.history属性。请求成功后,response.url 返回最终 URL,而 response.history 提供所有中间响应及其各自 URL 的列表。使用此数据,您可以检查重定向并确定最终目的地。
以下代码片段演示了此方法:
import requests response = requests.get(someurl, allow_redirects=True) if response.history: print("Request was redirected") for resp in response.history: print(resp.status_code, resp.url) print("Final destination:") print(response.status_code, response.url) else: print("Request was not redirected")
此代码检查 response.history 属性是否不为空,表示发生了重定向。历史记录中的每个 resp 对象都包含中间响应的状态代码和 URL。最后,response.url 提供最终 URL。
考虑以下示例:
>>> import requests >>> response = requests.get('http://httpbin.org/redirect/3') >>> response.history (<Response [302]>, <Response [302]>, <Response [302]>) >>> for resp in response.history: ... print(resp.status_code, resp.url) ... 302 http://httpbin.org/redirect/3 302 http://httpbin.org/redirect/2 302 http://httpbin.org/redirect/1 >>> print(response.status_code, response.url) 200 http://httpbin.org/get
此输出确认请求在到达最终目的地 http:// 之前已重定向 3 次httpbin.org/get,提供了重定向链的完整图片。
以上是使用 Python 请求重定向后如何获取最终 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!