很多朋友对于vr成品网站源码分享vr372和vr源码h5不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:CDA数据分析师
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
今天我就用Python爬一爬虾米音乐,半分析半安利地给大家介绍一下这个充满有趣灵魂的组合。
数据获取
本次爬虫主要目的是爬取五月天所有歌曲的信息,信息维度当然是越多越好啦。
直接搜索关键词“五月天”,可能会出现歌名是“五月天”的信息,或者别人翻唱“cover五月天”的内容,搜索范围变大,多抓取了不少无用信息。
所以我以“五月天-艺人-专辑信息-歌曲id-歌曲详情”这个路径进行数据爬取。我发现,无论是专辑信息、歌曲list还是歌曲详情,都存在于非常漂亮的JSON格式里面:
本来可以美滋滋“唰唰唰”地批量下载。但是!URL里面有一个s的参数,我暂时找不到变化的规律(摔!)因为赶时间,就另辟蹊径,用相对麻烦一点的beautifulsoup库来解析网页源代码的内容,过程很坎坷,这就是我为什么五月天大电影上映凌晨还在写这篇文章的原因……
而且,爬虫的时候我还遇到两个坑:
1.两天前能运行的代码,在今天居然解析不到所需的内容了,因为爬取的东西内容格式发生了很大变化。难道是我正巧赶上了他们内部修改源代码的节点嘛?无从查证。
2.两天前还在显示的歌曲详情(播放量和收藏量),今天一看全都变成0了,每首歌都这样。我让别的朋友用其他电脑查看,也是没信息的。“检查”了一下,PlayCount这些参数直接变成Null了…?
最后得到三个文件,分别是专辑信息(50张)、歌曲列表(620首)和歌曲详情(620首),主要是通过专辑字符和歌曲id进行相关联,具体字段如下:
专辑信息(专辑种类、ID、封面、名字、艺术家、收藏数、语言、播放数、推荐数、歌曲数量、专辑字符、评分、评分人数、发布时间)歌曲列表(专辑名字、歌曲名字、ID、时长、播放量)歌曲详情(歌曲名字、别名、歌曲ID、时长、播放次数、作词、作曲、编曲、专辑名字、歌词、热门第一条评论、评论点赞数)
数据清洗
国际惯例:Excel画图表+Python画词云,(自认为)简单粗暴又高效。
截止目前在虾米音乐平台关于五月天的一共有50张专辑,其中“正正经经”的专辑有9张(“录音室专辑”),“单曲”类专辑有20张,歌曲数量在1到6首不等。
判断作品的优劣,最明显快速的方式就是查看大众对其的评分,我们来瞧瞧这50张专辑的评分分布:
可以看到,将近一半的的专辑评分在9.8-10.0之间,只有3张专辑评分没超过9分。说明大众对其认可度还是相当高的。
五月天曾说过只会出10张专辑,随着2016年《自传》的发布,现在已经有9张跟大家见面啦。我们先看看这9张的数据情况。
按照发布时间顺序排列:
根据专辑信息里面的歌曲ID(字符串形式和数字形式皆可),我们可以顺藤摸瓜爬取歌曲的信息,一共得到620首,除去没歌词的纯音乐歌曲55首,还剩565首。
再看看播放数量TOP20的歌曲:
我们从歌曲的创作内容来看看五月天的歌到底有什么特点。
每首歌都要经历作词、作曲和编曲的过程。在这177首歌里面,主唱阿信参加了139次作词、100次作曲,我说一句阿信是创作小王子没人反对吧!
编曲方面,68%的歌曲都是由五月天整个团队完成的,还有31首歌是有其他人参与合作的,合作次数最高的是周恒毅(8次)。
代码部分
xiamisongs(歌曲清单).py
importrequests\nfrombs4importBeautifulSoup\nimporttime\nimportpandasaspd\nimportrandom\nsongName=[]\nsongId=[]\nalbumName=[]\nduration=[]\nplayCount=[]\ndf=pd.read_excel(&39;)\nalbumString=df[&39;]\nheaders={\n&39;:&39;,\n&39;:&39;,\n&39;:&39;\n}\nurl=&39;\nforalbumIdinalbumString[13:]:\nprint(&39;.format(albumId))\nfull_url=url.format(albumId)\nres=requests.get(full_url,headers=headers)\nsoup=BeautifulSoup(res.text,&39;)\n\n39;.song-name&39;.album-name&歌曲id\nforiteminsn:\na=item.find_all(&39;)\nformina:\nsongId.append(m.get(&39;)[6:])\n39;.duration&39;.playCount-container&39;爬取成功啦!&39;专辑名字&39;歌曲名字&39;歌曲ID&39;歌曲时长&39;播放量&39;五月天歌曲清单.xlsx&39;https://www.xiami.com/api/album/getArtistAlbums?_q=%7B%22pagingVO%22:%7B%22page%22:1,%22pageSize%22:60%7D,%22artistId%22:3110,%22category%22:0%7D&_s=dd6d0ef72dda69944fc2fbaa33c5bc6c&39;Connection&39;keep-alive&39;Cookie&39;&39;User-Agent&39;Mozilla/5.0(iPhone;CPUiPhoneOS11_0likeMacOSX)AppleWebKit/604.1.38(KHTML,likeGecko)Version/11.0Mobile/15A372Safari/604.1&39;utf-8&39;result&39;data&39;albums&39;albumCategory&39;albumId&39;albumLogo&39;albumName&39;artistName&39;collects&39;language&39;playCount&39;recommends&39;songCount&39;albumStringId&39;albumStatus&39;gmtPublish&39;grade&39;gradeCount&39;专辑种类&39;专辑id&39;专辑封面&39;专辑名字&39;艺术家&39;收藏&39;语言&39;播放数&39;推荐&39;歌曲数量&39;专辑字符&39;状态&39;评分&39;评分人数&39;发布时间&39;五月天专辑信息.xlsx&作词\ncomposer=[]编曲\nalbumId=[]\nalbumName=[]\n?\nhotComment1=[]\ncommentLike1=[]\n?\nplayCount=[]\n?\ndf=pd.read_excel(&39;)\nalbumString=df[&39;]\nurl=&39;\n?\n?\n39;正在爬取{}&39;Connection&39;keep-alive&39;Cookie&39;&39;User-Agent&39;&39;html.parser&39;.song-name&39;(</span>)(.*?)spanclass=&34;style=&39;,res.text,re.S)\nfavCount.append(str(search_data[1])[-10:-3].replace(&39;,&39;).replace(&39;,&39;).replace(&39;,&39;))\n\nif(soup.select(&39;)):\nlyrics.append(soup.select(&39;)[0].text)\nelse:\nlyrics.append(&39;)\n\nif(soup.select(&39;)):\nnewSubName.append(soup.select(&39;)[0].text)\nelse:\nnewSubName.append(&39;)\n\ncreatInfo=soup.select(&39;)\nalbumName.append(creatInfo[0].text)\nsongwriters.append(creatInfo[1].text)作曲\narrangement.append(creatInfo[3].text)39;.count&39;.count&第一条热门评论\nif(soup.select(&39;)):\nhotComment1.append(soup.select(&39;)[0].text)\nelse:\nhotComment1.append(&39;)\n39;.count&39;.count&39;无&39;歌曲名字&39;别名&39;歌曲Id&39;收藏数量&39;播放数量&39;评论数量&39;作词&39;作曲&39;编曲&39;专辑名字&39;歌词&39;热门评论1&39;热门评论赞1&39;五月天歌曲详情1500.xlsx')
OK,本文到此结束,希望对大家有所帮助。
