Как получить истинный URL-адрес файла в Интернете. (Python) - PullRequest
7 голосов
/ 18 ноября 2009

Я замечаю, что иногда аудиофайлы в интернете имеют поддельный URL.

http://garagaeband.com/3252243

И это будет 302 на реальный URL:

http://garageband.com/michael_jackson4.mp3

У меня вопрос ... когда вы получаете поддельный URL, как вы можете получить РЕАЛЬНЫЙ URL из заголовков ?

В настоящее время это мой код для чтения заголовков файла. Я не знаю, даст ли мне этот код то, чего я хочу достичь. Как мне разобрать "реальный" URL из заголовков ответа?

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 ]

9 голосов
/ 18 ноября 2009

Используйте 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'
>>> 
2 голосов
/ 18 ноября 2009

Марк Пилигрим советует использовать httplib2 в " Dive Into Python3 ", поскольку он обрабатывает многие вещи (включая перенаправления) более разумным способом.

>>> import httplib2
>>> h = httplib2.Http()
>>> response, content = h.request("http://garagaeband.com/3252243")
>>> response["content-location"]
    "http://garageband.com/michael_jackson4.mp3"
0 голосов
/ 18 ноября 2009

Я решил ответ.

 import urllib2
    req = urllib2.Request('http://' + theurl)
    opener = urllib2.build_opener()
    f = opener.open(req)
    print 'the real url is......' + f .url
0 голосов
/ 18 ноября 2009

Вы должны прочитать ответ, понять, что вы получили 302 (НАЙДЕНО), и проанализировать реальный URL из заголовков ответа, а затем извлечь ресурс, используя новый URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...