Python爬虫实战,matplotlib模块,Python实现网易云音乐歌单数据可视化

您所在的位置:网站首页 python网易云音乐下载 Python爬虫实战,matplotlib模块,Python实现网易云音乐歌单数据可视化

Python爬虫实战,matplotlib模块,Python实现网易云音乐歌单数据可视化

2023-07-30 14:08| 来源: 网络整理| 查看: 265

前言

利用Python实现网易云音乐歌单数据可视化。废话不多说。

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

requests模块

pandas模块

matplotlib模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

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

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

网页分析 歌单索引页

1.jpg

选取华语热门歌单页面。

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

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

歌单详情页

2.jpg

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

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

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

如果想要获取信息可以使用selenium

获取数据 歌单索引页 from bs4 import BeautifulSoup import requests import time headers = {     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } for i in range(0, 1330, 35):     print(i)     time.sleep(2)     url = 'https://music.163.com/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('.dec a')     # 获取包含歌单索引页信息的标签     lis = soup.select('#m-pl-container li')     print(len(lis))     for j in range(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文件中         with open('playlist.csv', 'a+', encoding='utf-8-sig') as f:             f.write(url + ',' + title + ',' + play + ',' + user + '\n') 复制代码

通过上述代码我们获取歌单索引页信息

3.jpg

歌单详情页 from bs4 import BeautifulSoup import pandas as pd import requests import time df = pd.read_csv('playlist.csv', header=None, error_bad_lines=False, names=['url', 'title', 'play', 'user']) headers = {     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } for i in df['url']:     time.sleep(2)     url = 'https://music.163.com' + 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-tag i')     for p in tags_message:         tags.append(p.get_text())     # 对标签进行格式化     if len(tags) > 1:         tag = '-'.join(tags)     else:         tag = tags[0]     # 获取歌单介绍     if soup.select('#album-desc-more'):         text = soup.select('#album-desc-more')[0].get_text().replace('\n', '').replace(',', ',')     else:         text = '无'     # 获取歌单收藏量     collection = soup.select('#content-operation i')[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文件中     with open('music_message.csv', 'a+', encoding='utf-8-sig') as f:         f.write(title + ',' + tag + ',' + text + ',' + collection + ',' + play + ',' + songs + ',' + comments + '\n')     # 获取歌单内歌曲名称     li = soup.select('.f-hide li a')     for j in li:         with open('music_name.csv', 'a+', encoding='utf-8-sig') as f:             f.write(j.get_text() + '\n') 复制代码

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

4.jpg

数据可视化 歌曲出现次数 TOP10

6.png

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

歌单贡献UP主 TOP10

7.png

歌单播放量 TOP10

8.jpg

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

歌单收藏量 TOP10

9.jpg

建议收藏

歌单评论数 TOP10

10.jpg

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

歌单收藏数量分布情况

11.png

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

歌单播放数量分布情况

12.png

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

歌单标签图

13.jpg

既然选取的是华语歌单,那么华语这二字必不可少

歌单介绍词云图、

14.jpg

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3