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

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

 

原本想这里直接贴上歌曲的连接,可是因为版权问题,你们能够去网易云自行听取哈。算法

 

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

 

1、请求分析api

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

url.png

 

咱们这里经过浏览器中的歌曲的id来获取评论的连接,这是一个很是快捷的方式,我以前尝试过不少的方法,感受都太麻烦了,这个方式简单,你们之后爬取均可以按照这种方式进行。服务器

接着就是肯定是经过get仍是post的方式来提交数据的,咱们发现Headers里面显示是Post方式:cookie

post.png

 

涉及到表单的提交,通常都会附带敏感信息,例如cookie,因此这里咱们就须要检查一下有没有参数遗漏了:app

请求参数.png

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

  通常爬取的时候,咱们首先会预览一下数据信息,就控制台下面的preview,发现服务器返回的数据格式是json,因此咱们等下就须要把数据转换成json格式:post

预览.png

  看到没有,这些数据是很是具备规律的,而后就能够开始书写代码了。

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

2、代码书写

 

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]

 

3、数据可视化

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

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文件,你用浏览器打开就是这样:

点赞数.png

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

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,你就会看到这样相似的图片:

ciyun.png

最后我把点赞前十的评论都给贴出来,你们好好感觉一下:

 

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

 

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

 

三、有本事你就照顾好本身,否则就老老实实地让我来照顾你一生。

 

 四、不是在撩你,是真的想和你在一块儿。 也不是一点点喜欢你,是好喜欢好喜欢你。

 

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

 

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

 

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

 

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

 

九、我是同性恋,我超喜欢个人同桌。虽然你们都不承认,可我始终相信咱们必定能够在一块儿的。郑浩!我爱你!

 

十、我还喜欢你,并不仅是说说而已。但愿你之后不要再遇到我这样的人,敏感 总爱瞎想 胆小怕事 懦弱 又不能让你快乐 也不能让你喜欢我 你很累吧 可是又但愿你遇到像我这样的人 由于这样的人真的真的好喜欢你啊[哀伤]。

 

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

相关文章
相关标签/搜索