2019 年 9 月 10 日,周杰伦在 Instagram 上传九宫格照片宣布新歌歌名为《说好不哭》,并且表示新歌公开时间为 9 月 16 日 23:00。他还配文「16 号晚上 11 点首播,我只能说,如果没赶上首播的话你会哭哦!就像看球赛别人已经告诉你谁赢的道理......然后你会气我说 怎么不早叫我看首播,然后我会说,我已经告诉过你了......」
一起来欣赏一下MV吧,感觉还行,我也就看了99遍而已
《说好不哭》自上线之后刷爆互联网的每个角落,截止9月20日销量已经突破761万张。MV讲述了一个日本爱情故事。女主在奶茶店打工,认识了摄影师的男主。一来二去俩人就好上了,女主为了支持男主的摄影梦,拼命打工帮他买了高级相机。后来男主外出求学,与女主伤感分别。结尾的时候,女主在街上发传单,男主突然出现,两人相拥哭泣。
周董的人气毋庸置疑,无论微博还是知乎都霸占榜首多日。在QQ音乐中,这首歌下面已经有224979条评论。今天我们就通过Python来抓取这些评论,看看广大歌迷们都说了什么?
打开浏览器的开发者工具,通过观察分页请求,我们发现所有的评论都出自同一个接口,虽然请求携带的参数比较多,但不重要,我们只需要只需要在每次请求修改它的pagenum和lastotcommentid的值即可。
pagenum :页码数
lastotcommentid : 上一页最后一条的commentid
响应体中,在comment中的commentlist中我们可以看到当页的留言内容,时间、用户信息等。。
commentid:评论的id
nick:评论人的昵称
rootcommentcontent:评论内容
time:评论时间
获取评论内容的代码如下:
# 获取评论
def get_comment(self, url):
response = json.loads(requests.get(url, headers=self.headers).text)
arr = []
for i in response['comment']['commentlist']:
# 评论id
comment_id = i['commentid']
if i['middlecommentcontent'] or self.is_exist(comment_id):
continue
# 评论内容
comment_content_arr = re.findall(r'[\u4e00-\u9fa5]+', i['rootcommentcontent'])
comment_content = ''.join(comment_content_arr)
if not comment_content:
continue
self.write_txt(comment_content)
# 点赞数
praise_num = i['praisenum']
# 昵称
nick = i['nick']
create_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(i['time']))
arr.append(comment_id)
self.last_comment_id = comment_id
# 保存
self.save(comment_id, comment_content, nick, praise_num, create_time)
print('last_comment_id: ' , comment_id)
return self.last_comment_id
将得到的评论进行清洗,为了取除一些无用字符,比如表情等。这里只保存了汉字。最终通过save方法,将20W条数据保存在Mongo中。
通过词云图去分析去展示一下网友们都说了啥
content = open('jay_comment.txt', encoding='utf-8').read()
cut = jieba.cut(content)
cut_text = '/'.join(cut)
wordcloud = WordCloud(background_color="white",
width=1000,
height=600,
max_font_size=50,
font_path='C:\Windows\Fonts\Simhei.ttf', # 需要根据实际操作系统更换路径
color_func=random_color)
wordcloud.generate_from_text(cut_text)
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig('jay.png', format='png', dpi=200)
在看MV中,有这样一个镜头,女主拿着一个粘着“话题No.1”的牌子,对应的歌词是:“到这个时候你还在意着,别人是怎么看我的”,不仅让人想到了前段时间一群“老年”网友在微博上为杰伦疯狂打榜的事情。看来周董是都把感谢藏了进去
以上仅展示部分代码,完整代码已上传GitHub (点击阅读原文直达)
https://github.com/python3xxx/Jay_qq_comment
长按|关注|学Python|