2016-08-24 41 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

我加了一点解释。 –