2016-08-24 2 views
1

Я пытался создать скрипт для загрузки песен из Интернета. Сначала я пытался загрузить песню, используя библиотеку «запросы». Но я не смог сыграть эту песню. Затем я сделал то же самое, используя библиотеку «urllib2», и на этот раз я смог сыграть песню.Загрузка песни через python-запросы

Не можете ли мы использовать библиотеку «запросы» для загрузки песен? Если да, то как?

код с помощью запросов:

import requests 
doc = requests.get("http://gaana99.com/fileDownload/Songs/0/28768.mp3") 
f = open("movie.mp3","wb") 
f.write(doc.text) 
f.close() 

код с помощью urllib2:

import urllib2 
mp3file = urllib2.urlopen("http://gaana99.com/fileDownload/Songs/0/28768.mp3") 
output = open('test.mp3','wb') 
output.write(mp3file.read()) 
output.close() 

ответ

5

Использование doc.content для сохранения binary data:

import requests 

doc = requests.get('http://gaana99.com/fileDownload/Songs/0/28768.mp3') 
with open('movie.mp3', 'wb') as f: 
    f.write(doc.content) 

Объяснение

Файл MP3 - это только двоичные данные, вы не можете получить его текстовую часть . Когда вы работаете с простым текстом, doc.text идеален, но для любого другого двоичного формата вам необходимо получить доступ к байтам с doc.content.

Вы можете проверить используемую кодировку, когда вы get простой текстовый ответ, doc.encoding установлен, иначе он пуст:

>>> doc = requests.get('http://gaana99.com/fileDownload/Songs/0/28768.mp3') 
>>> doc.encoding 
# nothing 

>>> doc = requests.get('http://www.example.org') 
>>> doc.encoding 
ISO-8859-1 
+1

Можете ли вы объяснить использование двоичного кодирования, а не юникод? –

+0

Я немного пояснил. –

Смежные вопросы