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

2019-01-15 SKY 互联网
浏览

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

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

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

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

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

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

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

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

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

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

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

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

一、网页分析

01 歌单索引页

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

选取华语热门歌单页面。

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

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

02 歌单详情页

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

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

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

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

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

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

二、数据获取

01 歌单索引页

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文件中