Я замечаю, что иногда аудиофайлы в интернете имеют поддельный 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
Используйте 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' >>>
Марк Пилигрим советует использовать 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"
Я решил ответ.
import urllib2 req = urllib2.Request('http://' + theurl) opener = urllib2.build_opener() f = opener.open(req) print 'the real url is......' + f .url
Вы должны прочитать ответ, понять, что вы получили 302 (НАЙДЕНО), и проанализировать реальный URL из заголовков ответа, а затем извлечь ресурс, используя новый URI.