文章目录
cloudmuscic:网易云音乐爬虫
一个功能强大的网易云音乐爬取的python库。
它支持与音乐相关的,音频文件、音乐封面、歌手信息、歌词、歌曲的相关评论的获赞数、发表时间、发表用户等等各种信息。
它还支持与用户先关的,用户等级、昵称、生日、地址、头像、账号创建时间、vip类型、粉丝数量,听歌排行等等
安装
pip install cloudmusic
使用
-
cloudmusic库设计了两个的对象,一切信息都存储在Music对象或User对象中。因此在获取信息之前,我们先要获取Music或User对象。- 通过歌曲id获取Music对象,并展示部分属性
-
通过歌曲id获取Music对象,并展示部分属性
import cloudmusic
music = cloudmusic.getMusic(1808053189)
print("歌名:{}".format(music.name)) # 歌名:迟迟
print("歌手:{}".format(music.artist)) # 歌手:['薛之谦']
- 通过歌单id获取Music对象列表,并下载整个歌单的无损品质音频
musiclist = cloudmusic.getPlaylist(5403228714)
# 循环对每个Music对象执行download方法
# 其中参数level有四个可选,分别是standard, higher, exhigh和lossless。分别代表标准、较高、极高和无损音质。
for music in musiclist:
music.download(level="lossless")
- 获取一首歌的热评并展示部分信息
music = cloudmusic.getMusic(1808053189)
coms = music.getHotComments()
print(len(coms))
for com in coms:
print("发布者:{}".format(com['nickName']))
print("内容:{}".format(com['content']))
print("获赞数:{}".format(com['likeCount']))
print("------------")
结果
发布者:殷昌祺
内容:是你让我开始听薛之谦,是你让我爱上了石家庄,你离开我走向人海,原来,你始终属于人海
获赞数:33242
------------
发布者:春浔花见
内容:岁岁年年我都会在你身边
获赞数:19863
------------
发布者:吃不胖的赵海伦m
内容:我对着日出日落许愿 希望你永远在我身边.
获赞数:18490
------------
发布者:WorldPeacessss
内容:迟迟不收场,对自己撒谎;余生已散场,哪里敢奢望。
获赞数:10866
------------
发布者:Ros_C_
内容:这首《迟迟》的解析在我下面的回复里噢
获赞数:6990
------------
发布者:NJ子逸
内容:迟迟等到你,迟迟你没有来,你知道吗,你迟到了,我也迟到了
2021 没有迟到,但我好想你
获赞数:5970
------------
发布者:困猫酱
内容:“微博很乱,超话很烦,但我不能把薛之谦一个人扔在那儿。”
获赞数:4566
------------
发布者:初鹿野城
内容:#哇哦计划# 这首歌作词子望是薛之谦暧昧mv的女主.
获赞数:4295
------------
发布者:钟亦昙
内容:关于我俩,连分开都很长
旧友到场,带遗憾的探望
迟迟不收场,对自己撒谎
余生已散场,哪里敢奢望
擅长失望独来模样,不受影响路途漫长…
或许…我还想再爱你一趟…
获赞数:4031
------------
发布者:薛吱谦
内容:#哇哦计划#薛之谦表示: 这首修修改改两年多了,来的这么晚就叫《迟迟》吧。
获赞数:3821
------------
发布者:Joker_诒
内容:是你姗姗来迟 我却心动久久
是你姗姗来迟 我却难以忘怀
获赞数:3501
------------
发布者:马也_Crabbit
内容:去年的人和事我放下了 今年遇见的人也没有什么结果 明年一定好好过日子 可我还是想让今年的人陪我到明年
获赞数:3223
------------
发布者:执伞盼卿归
内容:我们都是曾跑错剧场的小丑,才迟迟等不来对的人。
获赞数:3133
------------
发布者:KOMOREBI-zh
内容:迟迟钟鼓初长夜,耿耿星河欲曙天
获赞数:3002
------------
发布者:明天过后_FhJo
内容:本科线465我464
我很冷静,静的我一晚没睡
获赞数:2456
- 通过关键字搜索获取前100首歌曲的Music对象,并输出每首歌的评论数量
results = cloudmusic.search("薛之谦", 100)
for music in results:
print(music.getCommentsCount())
结果
448316
288911
291476
100564
218955
133203
168767
213398
151962
204266
133391
196162
243547
400339
78540
197183
100190
132084
91485
177046
music对象
1.music对象属性
- url:歌曲音频文件链接
- id:歌曲id
- name:歌曲名称
- artist:歌手名称
- artistId: 歌手id
- album:专辑名称
- albumId: 专辑id
- size:音频文件大小
- type:音频文件类型(mp3或m4a)
- level:歌曲品质。默认higher
- picUrl: 专辑图url
2. music对象方法
- download(dirs, level)
dirs:可选。下载保存路径。默认为当前文件夹内创建的新的cloudmusic文件夹。 level:可选,字符型。默认higher。下载品质,有且只有四种选择:standard,higher,exhigh,lossless。下载歌曲,返回值为下载绝对路径。 - getHotComments(number)
number:可选,整型,默认为15。希望获取的评论个数。上限为15个。
获取热评。返回值为列表,列表元素为字典,字典内容: “likeCount”:获赞数 “content”:评论内容 “time”:评论时间 “userId”:用户id “nickNamd”:用户昵称 “avatarUrl”:用户头像url “vipType”:0表示未开通vip,10表示开通音乐包,11表示开通黑胶 “userType”:0表示普通用户,非0表示特殊用户(明星,丁磊,网红,小秘书等)
- getComments(number)
number:整型,评论个数。数量无限制。
获取最新的评论。返回值与getHotReview相同。
- getLyrics()
获取歌词。返回值为列表。元素1为原始歌词,元素2为翻译歌词。 - getCommentsCount()
返回值为整型,本首歌的评论数量。
3.music对象函数
- getMusic(id/id_list)
id/id_list: 必须,整型、字符型或列表。歌曲id或由歌曲id组成的列表。
通过歌曲id或一个由id组成的列表生成music对象。当参数为单个id时返回值为单个music对象,当参数为id列表时返回值为music对象组成的列表。
- getPlaylist(id)
id:必须,整型或字符型。歌单id。
通过歌单id生成music对象,参数为歌单id,返回值为歌单内所有歌曲对应music对象组成的列表。
- search(content, number)
content:必须,字符型。搜索关键字。 number:可选,整形,搜索结果个数,默认为5。
通过关键词搜索获取music对象。返回值为music对象组成的列表。
- getAlbum(id)
id: 必须,整型或字符型。专辑id。
和getPlaylist一样。
user对象
1. user对象属性
- id:用户id
- level:用户等级
- listenSongs:累计听歌数量
- createTime:账号创建时间
- nickName:用户昵称
- avatarUrl:头像url
- city:所在城市的行政区划代码
- province:所在省份的行政区划代码
- vipType:vip类型。0表示未开通vip,10表示开通音乐包,11表示开通黑胶
- birthday:生日时间戳
- signature:个性签名
- fans:粉丝数量
- follows:关注的用户数量
- eventCount:动态数量
- playlistCount:创建的歌单数量
2.user对象方法
-
getPlaylist()
获取用户创建和收藏的全部歌单,返回值为一个列表,每个元素是一个歌单信息组成的字典。字典内容: id:歌单id; name:歌单名称; creatorId:创建者id; createTime:创建时间; coverImgUrl:歌单封面图片url; updateTime:歌单最后一次更新时间; tags:歌单所属音乐风格,列表形式 -
getRecord(recordType)
recordType: 可选。默认为0。为0返回所有时间排行,非0返回最近一周排行。
获取用户听歌排行,返回一个列表,元素为字典。字典内容: score:分值。100表示听歌次数最多,越小越少; music:Music对象
3.获取user对象函数
- getUser(id)
id:必须,用户id。
通过用户id获取User对象,返回值为User对象