ZPY博客

使用python爬取网易云歌曲下载时为0KB的解决方法

歌曲的下载地址为http://music.163.com/song/media/outer/url?id=xxx

urllib.request.urlretrieve方法下载总是为0KB。但是奇怪的是网上居然没有任何解决方法。。只能自己试了,最先以为是中文名的关系,但改成1.mp3这种也不行。

后来想着是不是urlretrieve下载不行,就改成下面这种方法试,结果还是不行。

with open(m4aUrl_name,'wb') as f:
f.write(mp.content)

最后实在没有办法准备放弃时突然看到一篇文章里,f.write时可以带headers,于是就试了下,果然就可以正常下载了。特此记录。代码如下:

import requests
import urllib
headers = {
     'Referer': 'https://music.163.com/',
     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 "
                   "Safari/537.36"
 }
download_url = 'http://music.163.com/song/media/outer/url?id=327096'
with open('1.mp3', 'wb') as f:
    f.write(requests.get(download_url, headers=headers).content)