如何使用Python Requests获取重定向URL

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

我认为它应该打印出历史记录,但它没有这样做。上面的 URL 指向一个视频,但我无法获取它,有人可以帮忙吗?谢谢


它打印出来的历史记录应该是什么? - Aaron Christiansen
我正在寻找真实的URL,而不是历史记录,但我却打印了历史记录,这是我的错误。 - 1a1a11a
1个回答

104

在被重定向后获取结果URL,您可以执行r.url

r = requests.get('https://youtu.be/dQw4w9WgXcQ') 
print(r.url) # https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtu.be

r.history 是用于获取最终URL之前的URL列表,因此它仅返回您最初的URL,因为您只被重定向了一次。


1
这真的对我在谷歌新闻爬取方面非常有帮助。 - Rajesh Wolf
8
如果我说错了,请纠正我,不就是我们只想获取重定向的URL字符串而不实际请求重定向URL时,这样做会不必要地发起对重定向URL的请求(浪费带宽和时间)吗? - ritiek
3
它实际上不会从套接字中读取任何数据,因此它不会浪费带宽(除了读取标题之外)。你可以使用requests.head来进行一个HEAD请求,但这并不总是有效,这取决于服务器是否设置正确。 - Artyer
15
这对我没用,它只是打印出原始的MIT链接。在过去的三年里,requests有什么变化吗...? - Max von Hippel
@TurunAmbartanen,非常抱歉,但我已经记不清了..也许其中一个点赞我的评论的人可以解释一下?(很抱歉没能提供更多帮助!) - Max von Hippel
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接