用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

爬虫api调用 输入网易云音乐或歌单地址下载vip歌曲

2020-04-05 作者: 雨沫初婴举报

[python]代码库

#直接复制歌曲链接或者歌单链接即可,无版权的歌曲不可下载。仅用于学习用途


import urllib.request
import sys
import re
import os
w = 0
wt = 0
class Dowsong(): #下载歌曲
    def __init__(self,songid):
        self.songid=songid
        """获取歌名"""
        name=urllib.request.urlopen('https://music.163.com/song?id='+self .songid).read().decode() #获取源码
        name = re.compile('"title": "' + "(.*?)" + '",', re.S).findall(name) # 获取歌名
        print('正在下载'+name[0])
        if os.path.exists(f+'/'+name[0]+'.mp3')==True:  #判断该文件是否存在,如果存在就删除
            os.remove(f+'/'+name[0]+'.mp3')
        dow='http://music.163.com/song/media/outer/url?id='+self .songid +'.mp3' #下载api
        urllib.request.urlretrieve(dow,f+'/'+name[0]+'.mp3')  #下载
        kb=((os.path.getsize(f+'/'+name[0]+'.mp3'))/1000)   #计算大小
        if (kb) < 100 :   #判断是否下载成功
            print(name[0]+'下载失败')
            os.remove(f + '/' + name[0] + '.mp3')
            w=+1
        else:
             print(name [0]+'下载成功'+'文件大小为'+str(kb)+'kb')
             wt=+1
i=input('请输入歌曲连接或歌单连接')
#类型判断
t=''
d=''
try:#判断是否包含song
    a=re.search('song', i).span()
except:
    t='0'
else:
    d='song'
    print('你输入的可能为歌曲')
if  t =='0':
    try:
        a=re.search('playlist', i).span()#判断是否包含playlist
    except :
        print('你输入的可能不是歌曲或者歌单的连接')
        sys.exit()
    else:
        d='playlist'
        print('你输入的可能是歌单')
i=i.split('id=') #截取id
i=i[1]
i = i.replace('&user', '', )
f=input('请输入要保存到的文件目录:')

try:
    os.makedirs(f)#如果目录不存在那就创建个
except :
    pass

print(i)
#处理歌曲
if d=='song':
    Dowsong(i)
#处理歌单、
if d=='playlist':
    url='https://music.163.com/playlist?id='+i
    url=urllib.request.urlopen(url).read().decode()#获取歌单源码
    names=re.compile('"title": "' + "(.*?)" + '",', re.S).findall(url)#取歌单名
    print('当前歌单名:'+names[0])
    url=re.compile('<span class="f-ff2">歌曲列表</span>' + "(.*?)" + '<textarea id="song-list-pre-data" style="display:none;">', re.S).findall(url)#截取中间信息
    url=url[0]
    url=re.compile('<li><a href="/song' + "(.*?)" + '">', re.S).findall(url)#获取歌曲id
    print('获取到'+str(len(url))+'个音乐id信息')
    f=f+'/'+names[0]#以歌单名,创建文件目录
    try:
        os.makedirs(f)
    except:
        pass
    for urls in url :
        urls = urls.replace('?id=', '', )
        Dowsong(urls )
    print('下载成功'+str(wt)+'个'+'\n'+'下载失败'+str(w))


网友评论    (发表评论)

共5 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...