如何使用python请求获取重定向url

1a1*_*11a 23 python python-requests

r = requests.get('http://techtv.mit.edu/videos/1585-music-session-02/download.source') 
for i in r.history:
    print(i.url) 
Run Code Online (Sandbox Code Playgroud)

我认为它应该打印出历史记录,但事实并非如此,上面的网址指向一个视频,但我无法得到它,有人帮忙吗?谢谢

Aar*_*sen 43

要在重定向后获取结果URL,您可以执行此操作r.url.

r = requests.get('http://techtv.mit.edu/videos/1585-music-session-02/download.source') 
print(r.url) # http://d1baxxa0joomi3.cloudfront.net/2515a9db659b0ab26d869b4ff2dadca9/original.mov
Run Code Online (Sandbox Code Playgroud)

r.history 适用于最后一个之前的网址,因此它只返回原始网址,因为您只重定向一次.

  • 这对我不起作用,它只是打印出原始的 MIT 链接。在过去 3 年里,“请求”中的内容是否发生了变化……? (10认同)
  • 如果我错了,请纠正我,当我们只想要重定向 URL 字符串而不实际向重定向 URL 发出请求时,这会不会不必要地向重定向 URL 发出请求(浪费带宽和时间)? (7认同)
  • @ritiek 它实际上不会从套接字读取任何数据,因此不会浪费带宽(除了读取标头之外)。您可以使用 `requests.head` 代替执行 HEAD 请求,但这并不总是有效,因为这取决于服务器是否设置正确。 (3认同)