Python数据可视化:网易云音乐歌单

大数据 数据可视化
本次通过对网易云音乐华语歌单数据的获取,对华语歌单数据进行可视化分析。可视化库不采用pyecharts,来点新东西。使用matplotlib可视化库,利用这个底层库来进行可视化展示。

网易云音乐2018年度听歌报告—遇见你,真好。

相信有不少人在上周,应该已经看过自己网易云音乐的年度报告了。

小F也是去凑凑热闹,瞅了一波自己的年度听歌报告。

那么你在云村又听了多少首歌,听到最多的歌词又是什么呢?

2018年你的年度歌手又是谁,哪些又是你***的歌呢?

不过相比去年,我的票圈并没有很多发自己年度报告的朋友。

不得不说,版权之争开始,网易云音乐似乎就在走下坡路。

很多喜欢的歌听不了,这应该是大家共同的痛点。

***的印象就是周董的歌,在愚人节时下架了,原以为只是个玩笑,不想却是真的。

本次通过对网易云音乐华语歌单数据的获取,对华语歌单数据进行可视化分析。

可视化库不采用pyecharts,来点新东西。

使用matplotlib可视化库,利用这个底层库来进行可视化展示。

一、网页分析

01 歌单索引页

Python数据可视化:网易云音乐歌单

选取华语热门歌单页面。

获取歌单播放量,名称,及作者,还有歌单详情页链接。

本次一共获取了1302张华语歌单。

02 歌单详情页

Python数据可视化:网易云音乐歌单

获取歌单详情页信息,信息比较多。

有歌单名,收藏量,评论数,标签,介绍,歌曲总数,播放量,收录的歌名。

这里歌曲的时长、歌手、专辑信息在网页的iframe中。

需要用selenium去获取信息,鉴于耗时过长,小F选择放弃...

有兴趣的小伙伴,可以试一下哈...

二、数据获取

01 歌单索引页

  1. from bs4 import BeautifulSoup 
  2. import requests 
  3. import time 
  4.  
  5. headers = { 
  6.     'User-Agent''Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' 
  7.  
  8. for i in range(0, 1330, 35): 
  9.     print(i) 
  10.     time.sleep(2) 
  11.     url = 'https://music.163.com/discover/playlist/?cat=欧美&order=hot&limit=35&offset=' + str(i) 
  12.     response = requests.get(url=url, headers=headers) 
  13.     html = response.text 
  14.     soup = BeautifulSoup(html, 'html.parser'
  15.     # 获取包含歌单详情页网址的标签 
  16.     ids = soup.select('.dec a'
  17.     # 获取包含歌单索引页信息的标签 
  18.     lis = soup.select('#m-pl-container li'
  19.     print(len(lis)) 
  20.     for j in range(len(lis)): 
  21.         # 获取歌单详情页地址 
  22.         url = ids[j]['href'
  23.         # 获取歌单标题 
  24.         title = ids[j]['title'
  25.         # 获取歌单播放量 
  26.         play = lis[j].select('.nb')[0].get_text() 
  27.         # 获取歌单贡献者名字 
  28.         user = lis[j].select('p')[1].select('a')[0].get_text() 
  29.         # 输出歌单索引页信息 
  30.         print(url, title, play, user
  31.         # 将信息写入CSV文件中 
  32.         with open('playlist.csv''a+', encoding='utf-8-sig'as f: 
  33.             f.write(url + ',' + title + ',' + play + ',' + user + '\n')

获取歌单索引页信息如下,共1302张华语歌单。

Python数据可视化:网易云音乐歌单

02、歌单详情页

  1. from bs4 import BeautifulSoup 
  2. import pandas as pd 
  3. import requests 
  4. import time 
  5.  
  6. df = pd.read_csv('playlist.csv', header=None, error_bad_lines=False, names=['url''title''play''user']) 
  7.  
  8. headers = { 
  9.     'User-Agent''Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' 
  10.  
  11. for i in df['url']: 
  12.     time.sleep(2) 
  13.     url = 'https://music.163.com' + i 
  14.     response = requests.get(url=url, headers=headers) 
  15.     html = response.text 
  16.     soup = BeautifulSoup(html, 'html.parser'
  17.     # 获取歌单标题 
  18.     title = soup.select('h2')[0].get_text().replace(','','
  19.     # 获取标签 
  20.     tags = [] 
  21.     tags_message = soup.select('.u-tag i'
  22.     for p in tags_message: 
  23.         tags.append(p.get_text()) 
  24.     # 对标签进行格式化 
  25.     if len(tags) > 1: 
  26.         tag = '-'.join(tags) 
  27.     else
  28.         tag = tags[0] 
  29.     # 获取歌单介绍 
  30.     if soup.select('#album-desc-more'): 
  31.         text = soup.select('#album-desc-more')[0].get_text().replace('\n''').replace(','','
  32.     else
  33.         text = '无' 
  34.     # 获取歌单收藏量 
  35.     collection = soup.select('#content-operation i')[1].get_text().replace('(''').replace(')'''
  36.     # 歌单播放量 
  37.     play = soup.select('.s-fc6')[0].get_text() 
  38.     # 歌单内歌曲数 
  39.     songs = soup.select('#playlist-track-count')[0].get_text() 
  40.     # 歌单评论数 
  41.     comments = soup.select('#cnt_comment_count')[0].get_text() 
  42.     # 输出歌单详情页信息 
  43.     print(title, tag, text, collection, play, songs, comments) 
  44.     # 将详情页信息写入CSV文件中 
  45.     with open('music_message.csv''a+', encoding='utf-8-sig'as f: 
  46.         f.write(title + ',' + tag + ',' + text + ',' + collection + ',' + play + ',' + songs + ',' + comments + '\n'
  47.     # 获取歌单内歌曲名称 
  48.     li = soup.select('.f-hide li a'
  49.     for j in li: 
  50.         with open('music_name.csv''a+', encoding='utf-8-sig'as f: 
  51.             f.write(j.get_text() + '\n'

获取的1302张华语歌单的详情。

Python数据可视化:网易云音乐歌单

 

 

1302张歌单里的121118首歌。

Python数据可视化:网易云音乐歌单

 

 

三、数据可视化

可视化代码已上传GitHub,点击左下角阅读原文即可访问!!!

01 歌曲出现次数 ***0

Python数据可视化:网易云音乐歌单

 

榜上的十首歌,除了「水星记」,小F听得次数都不少。

那么你又是如何的呢?

在小F的印象里,这些歌都曾在网易云音乐热歌榜的榜首出现过。

02 歌单贡献UP主 ***0

Python数据可视化:网易云音乐歌单

 

10大歌单贡献UP主,感谢这些辛勤的“搬运工”,给大家带来优质的歌单。

给广大懒人癌患者,亦或选择困难症患者,带来福利。

03 歌单播放量 ***0

Python数据可视化:网易云音乐歌单

 

歌单播放量前十名单,***名7000多万播放量。

其实matplotlib生成的图是挺清楚的,只不过一上传就变模糊了。

所以这里你可能会觉得图片质量不行...

其实并不是,为此小F做了相应的图表,具体见文末~

04 歌单收藏量 ***0

Python数据可视化:网易云音乐歌单

 

同样是好东西,收藏收藏!!!

有一些歌单和播放量***0里歌单有重复。

05 歌单评论数 ***0

Python数据可视化:网易云音乐歌单

 

歌单「再见大侠:武侠小说泰斗金庸逝世」评论数最多。

相信不少人的阅读时光,就是与金庸前辈的武侠小说一起度过。

飞雪连天射白鹿,笑书神侠倚碧鸳。

还有由小说改编成的电视剧,都是经典!!!

小F武侠小说看的少,武侠电视剧看的多...

06 歌单收藏数量分布情况

Python数据可视化:网易云音乐歌单

 

将收藏数做对数处理,使得能直观看出歌单收藏数的分布。

主要分布在0-15万之间(ln(150000)=12)。

07 歌单播放数量分布情况

Python数据可视化:网易云音乐歌单

 

歌单播放数主要分布在0-1000万。

其中ln(10000000)=16。

08 歌单标签图

Python数据可视化:网易云音乐歌单

 

既然选取的是华语歌单,那么华语这二字必不可少,而且还占大头。

那么就看看除了华语,还有什么其他标签。

「流行」没啥好说的。

「古风」「说唱」「民谣」近些年来热度是越来越高,不过也有玩坏的时候。

比如「离人愁」、「一人我饮酒醉」,小F作为吃瓜群众,只能说且行且珍惜...

09 歌单介绍词云图

Python数据可视化:网易云音乐歌单

 

歌单介绍词云图,希望你能找到你喜欢某首歌的原因!!!

到底是希望,还是青春,亦或是回忆呢?

四、总结

***,把本次搜刮的干货,分享给大家。

Python数据可视化:网易云音乐歌单

Python数据可视化:网易云音乐歌单

Python数据可视化:网易云音乐歌单

可视化及相关代码都放「GitHub」上头了。

GitHub:https://github.com/Tobby-star/music_163

作者:法纳斯特,Python爱好者,喜欢爬虫,数据分析以及可视化。

责任编辑:未丽燕 来源: 法纳斯特
相关推荐

2018-05-14 14:02:41

Python爬虫网易云音乐

2020-03-11 14:39:26

数据可视化地图可视化地理信息

2023-06-12 07:44:21

大数据数据治理

2017-10-14 13:54:26

数据可视化数据信息可视化

2022-08-26 09:15:58

Python可视化plotly

2020-05-26 11:34:46

可视化WordCloud

2022-02-23 09:50:52

PythonEchartspyecharts

2022-09-21 23:29:15

Python点云数据

2013-03-04 10:57:01

网易云音乐

2024-08-20 18:16:49

数据可视化Python

2017-10-31 09:38:53

大数据数据可视化Python

2018-11-30 10:28:44

Python反爬网页

2015-08-20 10:00:45

可视化

2021-05-26 10:21:31

Python音乐软件包

2018-12-03 16:50:23

数据可视化数据分析薪水

2019-01-02 11:59:26

Python数据可视化GDP

2018-11-21 14:38:09

分析在数据电影

2022-09-29 11:16:21

Python数据可视化

2017-06-29 11:26:08

Python数据可视化

2020-09-02 13:56:03

Python可视化数据
点赞
收藏

51CTO技术栈公众号