1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python爬虫实战 matplotlib模块 Python实现网易云音乐歌单数据可视化

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

时间:2021-07-22 01:00:02

相关推荐

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

前言

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

让我们愉快地开始吧~

开发工具

Python版本:3.6.4

相关模块:

requests模块

pandas模块

matplotlib模块;

以及一些Python自带的模块。

环境搭建

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

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

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

网页分析

歌单索引页

选取华语热门歌单页面。

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

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

歌单详情页

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

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

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

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

获取数据

歌单索引页

frombs4importBeautifulSoupimportrequestsimporttimeheaders={'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.textsoup=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+'\n')复制代码

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

歌单详情页

frombs4importBeautifulSoupimportpandasaspdimportrequestsimporttimedf=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=''+iresponse=requests.get(url=url,headers=headers)html=response.textsoup=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('\n','').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+'\n')#获取歌单内歌曲名称li=soup.select('.f-hidelia')forjinli:withopen('music_name.csv','a+',encoding='utf-8-sig')asf:f.write(j.get_text()+'\n')复制代码

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

数据可视化

歌曲出现次数 TOP10

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

歌单贡献UP主 TOP10

歌单播放量 TOP10

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

歌单收藏量 TOP10

建议收藏

歌单评论数 TOP10

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

歌单收藏数量分布情况

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

歌单播放数量分布情况

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

歌单标签图

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

歌单介绍词云图、

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。