前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你爬取抖音甜曲《好喜欢你》,感受荷尔蒙的气息

教你爬取抖音甜曲《好喜欢你》,感受荷尔蒙的气息

作者头像
啃饼思录
发布2018-12-19 14:32:00
7800
发布2018-12-19 14:32:00
举报

记不清这是实战第几篇了,你看看就知道了。。。

最近发现一首很火的歌,瞬间让你感受到浓浓的青春懵懂感,这就是王广允的《好喜欢你》。说实话,爬这种爱意浓浓的歌曲似乎不是我们这种单身XX应有的想法,但是还是想体会一下那些青春岁月里的小幸福,话不多说,代码走起来。

本来想这里直接贴上歌曲的链接,但是由于版权问题,大家可以去网易云自行听取哈。

我们这次爬取的信息主要是评论点赞前十的数据,并据此进行数据可视化操作,生成词云。

一、请求分析

我们首先打开网易云音乐的官网,进入《好喜欢你》的播放页面,然后按F12或者审查元素获取控制台信息。

我们这里通过浏览器中的歌曲的id来获取评论的链接,这是一个非常快捷的方式,我之前尝试过很多的方法,感觉都太麻烦了,这个方式简单,大家以后爬取都可以按照这种方式进行。

接着就是确定是通过get还是post的方式来提交数据的,我们发现Headers里面显示是Post方式:

涉及到表单的提交,一般都会附带敏感信息,例如cookie,所以这里我们就需要检查一下有没有参数遗漏了:

我们在Headers底下发现有一个Rorm Data里面包含两个参数params和encSecKey,待会我们提交的时候需要带上这两个参数。如果你爬过类似的网站,你就会猜测这个可能就是标识歌曲信息和个人信息的一个加密数据,实际上这个就是那样的。本篇并不打算去介绍如何去破解这个加密算法,我打算可能下一篇来介绍一下这个破解过程。

一般爬取的时候,我们首先会预览一下数据信息,就控制台下面的preview,发现服务器返回的数据格式是json,所以我们等下就需要把数据转换成json格式:

看到没有,这些数据是非常具有规律的,然后就可以开始书写代码了。

通常我们需要在headers里面添加一些host,referer,user-agent等,这是防止被网站识别出爬虫而被限制访问。

二、代码书写

代码语言:javascript
复制
 1import requests
 2import json
 3
 4 # 获取歌曲评论的url
 5url = 'https://music.163.com/weapi/v1/resource/comments/R_SO_4_1320098098?csrf_token=cfb7c24b770cd1cad7f7bf6c9bcb6f29' 
 6
 7 # 因为是post提交,采用MD5或者其他算法加密过,但是我们可以直接使用加密后的数据,用于浏览器识别身份(关于如何破解这个加密数据,下一篇介绍)
 8headers = {
 9'Host': 'music.163.com',
10'Origin': 'https://music.163.com',
11'Referer': 'https://music.163.com/song?id=1320098098',
12'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'
13              ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
14}
15
16User_Data = {
17    'params': 'ilXGpo53YAlLd7+0UutKIXmODpUQWhXl1lvPU2a7Y8vOIsFvIr/Q5QYpaSvXRgMU47q5Aa9gJkmY5KM2jS+l5gaIAzf/OmVy6ud71TFl'
18              'fyELQADIGNGSbW8PNXvNyWvPMjEImTtIxrvoOgFlLF429Tbpd/XAAnh6aQu23+hKxThzLBZhO0jdOLLgNAvm87McNgiaVfCQ+1eYws4kn5i+8jR/P/UPt9wdIM8G8qx1xmw=',
19    'encSecKey': '79c3d0f6664de1758c3ae2c3c7c9dabbb61c2a46b79fa0a8d40a842361c6ddd94d2e21594219bf98b9e4ff124fa3f5046b'
20                 '1dfa60f38c35fc5511f1be314ed0bcac69a7867f2870ba01b8af7ee0900a588759b5aad499565aa45e379589a42ba150fa5e'
21                 'df4afb0442f063ab212d9eb9376b4ca99f282d9520653fd808176a5e0f'
22}  
23
24 # 通过post方式来提交数据
25response = requests.post(url, headers=headers, data= User_Data) 
26
27# 转换成json格式便于后面数据的提取
28data = json.loads(response.text)  
29hotcomments = []
30for hotcomment in data['hotComments']:
31    item ={
32        'nickname': hotcomment['user']['nickname'],
33        'content': hotcomment['content'],
34        'likedCount': hotcomment['likedCount']
35    }
36    hotcomments.append(item)
37
38 # 获取评论的用户名称,内容,以及对应的点赞数
39nickname_list = [content['nickname']for content in hotcomments]  
40content_list = [content['content']for content in hotcomments]
41likedCount_list = [content['likedCount']for content in hotcomments]

三、数据可视化

这里我使用了pyecharts这个开源库,它是百度Echarts对Python的实现,挺好用的。使用它需要安装一些依赖包,关于pyecharts的安装我就不介绍了,直接贴上实现数据图表的代码:

代码语言:javascript
复制
1from pyecharts import Bar
2# 图表展示
3bar = Bar('评论中点赞数显示图')
4bar.add('点赞数',nickname_list,likedCount_list, is_stack=True, mark_line=['min', 'max'], mark_point=['average'] )
5bar.render()

代码是不是很少,它会在当前的目录下面生成一个render.html文件,你用浏览器打开就是这样:

接下来便是生成词云了,这里也是贴上实现词云的代码:

代码语言:javascript
复制
1from wordcloud import WordCloud
2import matplotlib.pyplot as plt
3# 词云展示
4content_text = " ".join(content_list)
5wordcloud = WordCloud(font_path=r"F:\字体\21\YGY20070701.ttf",max_words=200).generate(content_text)
6plt.figure()
7plt.imshow(wordcloud,interpolation='bilinear')
8plt.axis('off')
9plt.show()

代码也是比较少的,系统会生成一个图片。如果你使用pycharm这个IDE,你就会看到这样类似的图片:

关于pyecharts和词云的使用,我后面会有相应的文章进行介绍,大家后续关注就可以了。

最后我把点赞前十的评论都给贴出来,大家好好感受一下:

1、阴天雨天晴天,都不如你和我聊天。

2、我高中同学,上课坐在后面喜欢听歌 喜欢戴墨镜在学校里穿梭 喜欢耍酷 走到哪都是一道风景!学校每次演出 他都会参与 每次出场都会响起一阵女生崇拜的尖叫声。毕业后经常会在综艺选秀节目看到他的身影 当时会觉得他可能会成为一个大明星。时至今日 他现在的成就 和他的努力成正比 。

3、有本事你就照顾好自己,不然就老老实实地让我来照顾你一辈子。

4、不是在撩你,是真的想和你在一起。 也不是一点点喜欢你,是好喜欢好喜欢你。

5、我会在每一分钟的60秒每一个小时的60分钟每一天的24小时每一个星期的7天每一个月的31天每一年的365天想你,但是表白找不到人怎么办? 啊哈。

6、我试过一个人回家,我也试过一个人吃饭,一个人低头学习,一个人拿行李箱。可以亲爱的,因为你我认识了更多志同道合又惺惺相惜的人啊,你是我口袋里的男朋友,我多想有一天,自己很努力很优秀,只要静静的看着在台上闪闪发光的你就好了,一路披荆斩棘,也谢谢你这么优秀[爱心],这次换我们来保护你了。

7、今天是分手的第23天,我得心情不是很美妙。我选择忘记,重新开始,你昨晚缺还来找我!大胆!扰乱我的心神! 虽然我是个卖jia表的,但是你不能瞧不起我啊!。

8、阴天雨天晴天,都不如我这里的PT鞋。

9、我是同性恋,我超喜欢我的同桌。虽然大家都不认可,可我始终相信我们一定可以在一起的。郑浩!我爱你!

10、我还喜欢你,并不只是说说而已。希望你以后不要再遇到我这样的人,敏感 总爱瞎想 胆小怕事 懦弱 又不能让你快乐 也不能让你喜欢我 你很累吧 但是又希望你遇到像我这样的人 因为这样的人真的真的好喜欢你啊[哀伤]。

看到这里,我想说你们尽管秀,能伤害到我,就算我输,毕竟单身多年也是凭实力的。。。。。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 啃饼思录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档