♚
作者:法纳斯特,Python爱好者,喜欢爬虫,数据分析以及可视化。
GitHub:/Tobby-star
网易云音乐度听歌报告—遇见你,真好。
相信有不少人在上周,应该已经看过自己网易云音乐的年度报告了。
笔者也是去凑凑热闹,瞅了一波自己的年度听歌报告。
那么你在云村又听了多少首歌,听到最多的歌词又是什么呢?
你的年度歌手又是谁,哪些又是你最爱的歌呢?
不过相比去年,我的票圈并没有很多发自己年度报告的朋友。
不得不说,版权之争开始,网易云音乐似乎就在走下坡路。
很多喜欢的歌听不了,这应该是大家共同的痛点。
最大的印象就是周董的歌,在愚人节时下架了,原以为只是个玩笑,不想却是真的。
本次通过对网易云音乐华语歌单数据的获取,对华语歌单数据进行可视化分析。
可视化库不采用pyecharts,来点新东西。
使用matplotlib可视化库,利用这个底层库来进行可视化展示。
/ 01 / 网页分析
01 歌单索引页
选取华语热门歌单页面。
获取歌单播放量,名称,及作者,还有歌单详情页链接。
本次一共获取了1302张华语歌单。
02 歌单详情页
获取歌单详情页信息,信息比较多。
有歌单名,收藏量,评论数,标签,介绍,歌曲总数,播放量,收录的歌名。
这里歌曲的时长、歌手、专辑信息在网页的iframe中。
需要用selenium去获取信息,鉴于耗时过长,笔者选择放弃...
有兴趣的小伙伴,可以试一下哈...
/ 02 / 数据获取
01 歌单索引页
frombs4importBeautifulSoup
importrequests
importtime
headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
foriinrange(0,1330,35):
print(i)
time.sleep(2)
url='/discover/playlist/?cat=欧美&order=hot&limit=35&offset='+str(i)
response=requests.get(url=url,headers=headers)
html=response.text
soup=BeautifulSoup(html,'html.parser')
#获取包含歌单详情页网址的标签
ids=soup.select('.deca')
#获取包含歌单索引页信息的标签
lis=soup.select('#m-pl-containerli')
print(len(lis))
forjinrange(len(lis)):
#获取歌单详情页地址
url=ids[j]['href']
#获取歌单标题
title=ids[j]['title']
#获取歌单播放量
play=lis[j].select('.nb')[0].get_text()
#获取歌单贡献者名字
user=lis[j].select('p')[1].select('a')[0].get_text()
#输出歌单索引页信息
print(url,title,play,user)
#将信息写入CSV文件中
withopen('playlist.csv','a+',encoding='utf-8-sig')asf:
f.write(url+','+title+','+play+','+user+' ')
获取歌单索引页信息如下,共1302张华语歌单。
02 歌单详情页
frombs4importBeautifulSoup
importpandasaspd
importrequests
importtime
df=pd.read_csv('playlist.csv',header=None,error_bad_lines=False,names=['url','title','play','user'])
headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
foriindf['url']:
time.sleep(2)
url=''+i
response=requests.get(url=url,headers=headers)
html=response.text
soup=BeautifulSoup(html,'html.parser')
#获取歌单标题
title=soup.select('h2')[0].get_text().replace(',',',')
#获取标签
tags=[]
tags_message=soup.select('.u-tagi')
forpintags_message:
tags.append(p.get_text())
#对标签进行格式化
iflen(tags)>1:
tag='-'.join(tags)
else:
tag=tags[0]
#获取歌单介绍
ifsoup.select('#album-desc-more'):
text=soup.select('#album-desc-more')[0].get_text().replace(' ','').replace(',',',')
else:
text='无'
#获取歌单收藏量
collection=soup.select('#content-operationi')[1].get_text().replace('(','').replace(')','')
#歌单播放量
play=soup.select('.s-fc6')[0].get_text()
#歌单内歌曲数
songs=soup.select('#playlist-track-count')[0].get_text()
#歌单评论数
comments=soup.select('#cnt_comment_count')[0].get_text()
#输出歌单详情页信息
print(title,tag,text,collection,play,songs,comments)
#将详情页信息写入CSV文件中
withopen('music_message.csv','a+',encoding='utf-8-sig')asf:
f.write(title+','+tag+','+text+','+collection+','+play+','+songs+','+comments+' ')
#获取歌单内歌曲名称
li=soup.select('.f-hidelia')
forjinli:
withopen('music_name.csv','a+',encoding='utf-8-sig')asf:
f.write(j.get_text()+' ')
获取的1302张华语歌单的详情。
1302张歌单里的121118首歌。
/ 03 / 数据可视化
可视化代码已上传GitHub,点击左下角阅读原文即可访问!!!
01 歌曲出现次数 TOP10
榜上的十首歌,除了「水星记」,笔者听得次数都不少。
那么你又是如何的呢?
在笔者的印象里,这些歌都曾在网易云音乐热歌榜的榜首出现过。
02 歌单贡献UP主 TOP10
10大歌单贡献UP主,感谢这些辛勤的“搬运工”,给大家带来优质的歌单。
给广大懒人癌患者,亦或选择困难症患者,带来福利。
03 歌单播放量 TOP10
歌单播放量前十名单,第一名7000多万播放量。
其实matplotlib生成的图是挺清楚的,只不过一上传就变模糊了。
所以这里你可能会觉得图片质量不行...
其实并不是,为此笔者做了相应的图表,具体见文末~
04 歌单收藏量 TOP10
同样是好东西,收藏收藏!!!
有一些歌单和播放量TOP10里歌单有重复。
05 歌单评论数 TOP10
歌单「再见大侠:武侠小说泰斗金庸逝世」评论数最多。
相信不少人的阅读时光,就是与金庸前辈的武侠小说一起度过。
飞雪连天射白鹿,笑书神侠倚碧鸳。
还有由小说改编成的电视剧,都是经典!!!
笔者武侠小说看的少,武侠电视剧看的多...
06 歌单收藏数量分布情况
将收藏数做对数处理,使得能直观看出歌单收藏数的分布。
主要分布在0-15万之间(ln(150000)=12)。
07 歌单播放数量分布情况
歌单播放数主要分布在0-1000万。
其中ln(10000000)=16。
08 歌单标签图
既然选取的是华语歌单,那么华语这二字必不可少,而且还占大头。
那么就看看除了华语,还有什么其他标签。
「流行」没啥好说的。
「古风」「说唱」「民谣」近些年来热度是越来越高,不过也有玩坏的时候。
比如「离人愁」、「一人我饮酒醉」,笔者作为吃瓜群众,只能说且行且珍惜...
09 歌单介绍词云图
歌单介绍词云图,希望你能找到你喜欢某首歌的原因!!!
到底是希望,还是青春,亦或是回忆呢?
/ 04 / 总结
最后,把本次搜刮的干货,分享给大家。
可视化及相关代码都放「GitHub」上头了。
GitHub:/Tobby-star/music_163
跟winter一起学前端
“我是程劭非,网名“winter”,混迹于各大前端社区。作为前手机淘宝前端负责人,我曾带领团队开发出了阿里巴巴开源项目 Weex 移动前端开发框架,也取得了不错的成绩:目前 Weex 可以支持手机淘宝这样的航母级移动应用,把移动应用本身的灵活性、迭代更新的周期和成本优化到极致。
我在 年就开始接触前端。最开始,在微软北京担任软件开发工程师,负责 Windows CE 上的 IE 浏览器开发,接触到了当时最先进的软件工程体系,并且积累了很多 UI 架构经验。
我在阿里做淘宝前端负责人的时候,常常遇到有一些工作多年的前端工程师,在看到一些我认为很基础的用法时惊呼:“还可以这样!”。因此我常戏称很多同学,学前端的方式是“土法学前端”,他们对于知识的理解基本都停留在点上,对前端的知识体系和底层原理没有真正系统地理解。
相信由我来带你“重学”前端,必定会给你与众不同的视角和实战的技巧。”
——摘自极客时间《和winter一起,重学前端》
更多推荐
Python迭代器使用详解
一文读懂Python可迭代对象、迭代器和生成器
用Python爬取金融市场数据
搭建CNN模型破解网站验证码
用Python进行图文识别(OCR)
投稿邮箱:pythonpost@