欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用Python爬取陈奕迅新歌《我们》10万条评论的新发现

程序员文章站 2023-03-12 13:23:23
最近就有一部“怀旧”题材的电影,未播先火,那就是刘若英的处女作——《后来的我们》。青春,爱情,梦想,一直是“怀旧&rdq...

最近就有一部“怀旧”题材的电影,未播先火,那就是刘若英的处女作——《后来的我们》。青春,爱情,梦想,一直是“怀旧”题材的核心要素,虽然电影现在还未上映,但先行发布的主题曲《我们》,已经虐哭了不少人。在MV里,歌声清清浅浅,诉说着那些年关于爱情里的遗憾。

“我最大的遗憾,就是你的遗憾,与我有关”,下面就一起来感受一下吧。

这首歌是《后来的我们》中的主题曲,网易云音乐上线当天便席卷千万+播放量,现如今光是网易云上面的评论就马上突破了10万条。

网易云音乐一直是我向往的“神坛“,听音乐看到走心的评论的那一刻,高山流水。于是来抓取一下歌曲的热门评论。并做成图表、词云来展示,看看相对于这首歌最让人有感受的评论内容是什么。

感觉这个还挺有意思的,简单的重复早了*,看看整个一个过程学习记录一下!

爬虫的基本网络操作就不记录了,下面会放出源码

效果:

用Python爬取陈奕迅新歌《我们》10万条评论的新发现

知识点1:

pip安装出现 failed to create process

解决办法:python35 -m pip install pyecharts

知识点2:

安装WordCloud时pip无法安装

解决办法:去https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 下载对应你电脑py版本和电脑环境,然后在命令窗口中pip安装。

知识点3:

Pyecharts的使用,具体可参考:https://blog.csdn.net/u013421629/article/details/78183637

运行成功后,会在当前程序目录下生成一个render.html文件,在浏览器中打开即可看到效果

知识点4:

WordCloud的使用,具体可参考:https://blog.csdn.net/fontthrone/article/details/72775865

源码:

 

#抓取网易云音乐热评

import requests
import re
import json


#req = request.Session()
comm_url = 'https://music.163.com/weapi/v1/resource/comments/R_SO_4_551816010csrf_token=814692a9769375fcc43f179fc134a7cc'
header = {
    'Origin':'https://music.163.com',
    'Host':'music.163.com',
    'Referer':'https://music.163.com/songid=551816010',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
    }

##########################

#post key 数据
user_data = {
    'params':'0azFNHOQXrQR3kUdGq6ILvm7trulgN++kAard2ModFG2SiakjPNcHoc6FK//vCQJlG/2uoRQeCdFrmNHgv1TStIAfMQxvQKPoXFymF0NJFsfQClakpk2+qAcFsmckmKV+gsJxFOyt/7h2tK717d1oOPE5KfGRUDXdFyLNOtm5oNq0YTaKZb9wz8XHQEp8L1if4e5xWiWId91eGWS3zvRKFHDh6Bom5cUjp6zlFUrJro=',
    'encSecKey':'24105f0c5aa04aa4b24b2c9a06646974e03c8c6b74320fc662bf84432d97f9ed05fd48df6a970f6b377dff894bd3f13e362a870d997732320f51b631b190f4c9a0201070f691591510a858cc54fd962ef1ff445dcc8493e021e4524e8057ceefc82584272176e181501f7e5394da126ea058cedd30544ad304871b82db4cdee4'
    }


result = requests.post(comm_url,headers = header,data = user_data,timeout = 8)
result.encoding = "utf-8"
data = json.loads(result.text)

print(result)

hot_comments = []

#获取热评
for hot_comment in data['hotComments']:
    item = {
        'nickname' : hot_comment['user']['nickname'],
        'content' : hot_comment['content'],
        'likedCount' : hot_comment['likedCount']
        }
    hot_comments.append(item)
    

nickname_list = [content['nickname'] for content in hot_comments ]
content_list = [content['content'] for content in hot_comments ]
likedCount_list = [content['likedCount'] for content in hot_comments ]


#统计图表
from pyecharts import Bar

bar = Bar("热评中点赞示例图")
bar.add("点赞数",nickname_list,likedCount_list,is_stack = True,mark_line = ["min","max"],mark_point=["average"],is_more_utils=True)
bar.render()

#词图
from wordcloud import WordCloud
import matplotlib.pyplot as plt

content_text = " ".join(content_list)

wordcloud = WordCloud(font_path=r'C:\Users\S.Assassaisn\Desktop\123.ttf' ,max_words=200,width=1920, height=1080).generate(content_text)

plt.figure()
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis('off')
plt.show()

print("ok!!!")