知行编程网知行编程网  2022-03-18 08:00 知行编程网 隐藏边栏 |   抢沙发  33 
文章评分 0 次,平均分 0.0

用Python一起寻找最火的抖音神曲

地铁上,公交车上刷抖音的人太多了,而且男女老少都喜欢刷!抖音上小姐姐的舞蹈,神曲太多太多了。很多歌曲还非常好听,今天我们用Python来爬取网易云音乐中和抖音相关的歌曲,看看这些火爆的音乐是不是也是你喜欢的。

 

01.数据获取

 

数据的获取很多时候还是要依靠爬虫的,但是网易作为大厂,反爬功能比较完善,除了会封ip之外还进行了数据加密,一般来说使用requests之类的库直接获取网页源码是得不到想要的数据的。好在高手在民间,有大牛成功的突破了反扒,搞定了这些API,先看一下网易云音乐里面300首抖音神曲

 

用Python一起寻找最火的抖音神曲

在网易云音乐的首页搜索“抖音”会返回300首歌曲,其实我们在爬取的过程中会发现抖音相关的歌曲远不止300首,只是网站的显示限制罢了(最终获得了536首歌曲)。

这次我们主要获取歌曲的歌名、ID、歌手、专辑还有评论数,评论数虽然不能完全代表一首歌的受欢迎程度,但是可以在很大程度上反映其火热程度,用来做定性分析足够了。

关于爬虫,在使用了数据接口和现成的加密参数后,已经没什么难度可言,这里我们直接上代码。

 CommentCount

class Music163(object):
def __init__(self):
self.headers = {
'Cookie':'ail_psc_fingerprint=489a1ee9a8838699a1e50094226ee8a4; _iuqxldmzr_=32; _ntes_nnid=93e8a356b1355868c04b956990895dc3,1528856902905; _ntes_nuid=93e8a356b1355868c04b956990895dc3; usertrack=O2+gylssv1AZjDMaAwNwAg==; WM_TID=o%2BN0Am0Tj3zrdpaUwYpOvIIUhUu0DDpJ; Province=0530; City=0531; nts_mail_user=ytbfzd@163.com:-1:1; __f_=1537065092272; NNSSPID=2d4a0bd0bb7641e8b345ea0c28b13f07; P_INFO=liuyanjun00@163.com|1537171727|0|other|11&20|PL&1537108625&other#shd&null#10#0#0|&0|urs&mail163|liuyanjun00@163.com; __utmz=94650624.1537193819.4.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; JSESSIONID-WYYY=ldWHA1%2FVfjsC6CpwOdUY2uT5kKgPyJodZNQ%2F9pKUEWSOq7iGdRvBtBqwjIg%2FlZv2byFdEENVQmdn5SC%2F%5CjidN6SwrwK1wrQxs7DSZeVk0ica8flJ%2BvZ5XwqegGCB15k2w1DJZi%5Ckg%5C%2FzelH%5CO3gbp4YDrUUFtDKw0e9flvpkxyiwYSSy%3A1537231432828; __utma=94650624.1665018979.1537182135.1537193819.1537229634.5; __utmc=94650624; WM_NI=PwK44TRiLJVeuiUDWV2%2B92xNPB4%2FFGGvOObYXQsAcZr06B3lb07xuEZGJF1tO0ElsH9i6GpP1LA94F7xGt%2FA8IA1wlLeGs1wNn9L1pMvWBY1CHHr1%2BXUVOO71bJj34zEVXI%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eeafc2739898ab83b83ea5b084d2e972f8f58dabcc6f9be9f8a2d033a99aa695db2af0fea7c3b92a94a985d5b76092b784abd56fb7b79ba5d65ef2f5f7d3fb46949efcd0c54d85aa81b0e1539c8fbda2e252b2f0faa3b268a2f0f999f84f9a9986a7b4808df08b8df244fbb7faa8f35cf3948fdab74ef5a88995ae4bfc978fd2f66890bb8994b47d8eb2f7adb47c8faa99a3dc3b81988893b4219c8b9ab0ce3df3be868bb240ba9b9ab9cc37e2a3; __utmb=94650624.11.10.1537229634',
'Referer':'https://music.163.com/'
}
self.song_dict = {
'id':[],
'name':[],
'album':[],
'artists':[],
'com_count':[]
}

def get_song_info(self, response):
page_data = response.json()['result']['songs']
for data in page_data:
self.song_dict['id'].append(data['id'])
self.song_dict['name'].append(data['name'])
self.song_dict['album'].append(data['album']['name'])
self.song_dict['artists'].append(data['artists'][0]['name'])
self.song_dict['com_count'].append(CommentCount.get_comment_count(str(data['id'])))

def save_to_file(self):
df = pd.DataFrame(self.song_dict)
df.to_csv('douyin_songs_new.csv', index=False)
print(df)

def get_songs_list(self):
url = r'http://music.163.com/api/search/pc'
page = 0
dispage = 30
while True:
data = {
's':'抖音',
'offset':str(page),
'limit':str(dispage),
'type':'1'
}
response = requests.post(url, headers=self.headers, data=data)
if response.status_code == 200:
if 'songs' in response.json()['result'].keys():
print('正在获取第%d页歌曲列表' %page)
self.get_song_info(response)
else:
print('歌曲获取完毕')
break
else:
print('访问失败')
break
page += 30
time.sleep(1)
self.save_to_file()

def main():
music = Music163()
music.get_songs_list()

if __name__ == '__main__':
main()

(代码可以左右滑动)

 

其中,CommentCount模块用于返回指定歌曲的评论数,由于是借鉴了别人的代码,这里就不献丑了,需要的朋友可以借鉴这篇文章:(https://www.zhihu.com/question/36081767),最终获得了如下格式的数据:

 

用Python一起寻找最火的抖音神曲

 

 

02.数据可视化分析

 

现在我们就以这部分数据为基础进行分析,寻找那些受关注度比较高的抖音歌曲。这里用pyecharts 挑选几个纬度进行可视化分析:

 

1).评论数排名的歌曲

排名的图我们一般柱状图来直观的显示数据的对比关系,柱状图非常清晰的展现排序的关系,一目了然。

-Top10的歌曲

用Python一起寻找最火的抖音神曲

-Top30的歌曲

用Python一起寻找最火的抖音神曲

可以看到,排名第一的《说散就散关注度远高于第二名《再也没有》,而紧随其后的几首歌关注度都在2W+,彼此之间差异不大;虽然我不常刷抖音,但《离人愁》、《纸短情长》等歌曲也非常熟悉,抖音的带火功能可见一斑。

2).歌手情况

看看歌手的分布情况如何,我们用大饼图来看各个数据的分布情况如何:

用Python一起寻找最火的抖音神曲

从歌手情况来看,536首歌曲共出自488名歌手,其中1名歌手(春晓萨克斯)贡献了4首歌曲、5名歌手各贡献了3首歌曲、30名歌手各贡献了2首歌曲、452名歌手各贡献1首歌曲,其中多为民间歌手,果然抖音的全民参与程度非 常之高,这也侧面反映出抖音的影响之广泛。

 

3).歌手的贡献数量-关注度

是不是非常好奇各个歌手的关注度如何,猜猜贡献的歌曲数量越多,受关注度就越高吗,不一定哦!

用Python一起寻找最火的抖音神曲

我们把各歌手贡献的歌曲关注数求和,筛选出排名前30的歌手,发现这30名歌手中只有6名歌手贡献歌曲多于1首。而在关注度排名前10的歌手中只有'The Chainsmokers'一人贡献歌曲超过1首(3首),可见受关注度的高低与歌曲数量并没有太多关联,还是需要以质取胜。

4).专辑-关注度

看看发行的专辑和大家的关注度情况如何,结果让你大吃一惊。

 

用Python一起寻找最火的抖音神曲

专辑的情况,发现在贡献歌曲数量排名前10的专辑中,只有两个专辑的 综合关注度达到2W以上,这个情况与歌手情况基本一致,这充分说明了要想火还是要提供高质量的作品,依靠数量是不行的。

 

通过上面的分析我们发现,袁娅维和她的《说散就散》是截至目前抖音歌曲中最火的,当然抖音的歌曲都有一定的时效性,有可能《说散就散》不是当下最火爆的,但却是在一定的时间区间里受关注程度最高的。

 

 

03.词云分析

 

接下来我们不妨分析一下说散就散这首歌的歌词,通过词云图我们发现这首歌是围绕那些纠结的爱情往事展开的,与《前任3》这部电影的主题相互呼应。

 

用Python一起寻找最火的抖音神曲

 

作为电影《前任3》的主题曲,除了抖音带火和电影的双重影响外,可能也引起了很多人的共鸣吧,毕竟不管是年轻的小哥哥小姐姐,还是我们这群中年大叔和老阿姨,在过往是岁月中总会留下那么一点点故事吧~

探索数据的奥秘很有意思,用数据讲故事!

看过前任3的小伙伴,有看哭的mm也请留言!

 

Python就是这么有趣好玩

往期精彩:

还在担心酒店信息泄露,我用Python写了段加密算法,看你怎么破

用Python来描述一个在魔都生活的码农的故事

Python里面的这几个梗,你能回答出来吗

我珍藏的一些好的Python代码,技巧

 

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享