如何获取网页文件的真实URL。(Python)

8 投票
4 回答
4333 浏览
提问于 2025-04-15 16:07

我注意到,有时候网上的音频文件会有一个“假”的网址。

http://garagaeband.com/3252243

这个网址会302重定向到真正的网址:

http://garageband.com/michael_jackson4.mp3

我的问题是……当我拿到这个假网址时,怎么才能从响应头中获取真正的网址呢?

现在,这是我用来读取文件头信息的代码。我不确定这段代码能否帮我实现我的目标。怎么才能从响应头中解析出“真实”的网址呢?

import httplib
conn = httplib.HTTPConnection(head)
conn.request("HEAD",tail)
res = conn.getresponse()

这个网址有一个302重定向:

http://www.garageband.com/mp3cat/.UZCMYiqF7Kum/01_No_pierdas_la_fuente_del_gozo.mp3

4 个回答

0

你需要查看服务器的回复,发现你得到了一个302(找到),然后从回复的头信息中提取出真正的链接,接着用这个新的链接去获取资源。

2

Mark Pilgrim 在他的书《Dive Into Python3》中建议使用 httplib2,因为它能更聪明地处理很多事情,比如重定向。

>>> import httplib2
>>> h = httplib2.Http()
>>> response, content = h.request("http://garagaeband.com/3252243")
>>> response["content-location"]
    "http://garageband.com/michael_jackson4.mp3"
9

使用 urllib.getUrl() 方法

补充说明: 抱歉,我有一段时间没做这个了:

import urllib
urllib.urlopen(url).geturl()

举个例子:

>>> f = urllib2.urlopen("http://tinyurl.com/oex2e")
>>> f.geturl()
'http://www.amazon.com/All-Creatures-Great-Small-Collection/dp/B00006G8FI'
>>> 

撰写回答