二十万评论告诉你,周董的『说好不哭』有多火

640?wx_fmt=jpeg

2019 年 9 月 10 日,周杰伦在 Instagram 上传九宫格照片宣布新歌歌名为《说好不哭》,并且表示新歌公开时间为 9 月 16 日 23:00。他还配文「16 号晚上 11 点首播,我只能说,如果没赶上首播的话你会哭哦!就像看球赛别人已经告诉你谁赢的道理......然后你会气我说 怎么不早叫我看首播,然后我会说,我已经告诉过你了......」

一起来欣赏一下MV吧,感觉还行,我也就看了99遍而已2_02.png

    《说好不哭》自上线之后刷爆互联网的每个角落,截止9月20日销量已经突破761万张。MV讲述了一个日本爱情故事。女主在奶茶店打工,认识了摄影师的男主。一来二去俩人就好上了,女主为了支持男主的摄影梦,拼命打工帮他买了高级相机。后来男主外出求学,与女主伤感分别。结尾的时候,女主在街上发传单,男主突然出现,两人相拥哭泣。

640?wx_fmt=png


周董的人气毋庸置疑,无论微博还是知乎都霸占榜首多日。在QQ音乐中,这首歌下面已经有224979条评论。今天我们就通过Python来抓取这些评论,看看广大歌迷们都说了什么?


打开浏览器的开发者工具,通过观察分页请求,我们发现所有的评论都出自同一个接口,虽然请求携带的参数比较多,但不重要,我们只需要只需要在每次请求修改它的pagenum和lastotcommentid的值即可。

  • pagenum :页码数

  • lastotcommentid : 上一页最后一条的commentid


640?wx_fmt=png

响应体中,在comment中的commentlist中我们可以看到当页的留言内容,时间、用户信息等。。
  • commentid:评论的id

  • nick:评论人的昵称

  • rootcommentcontent:评论内容

  • time:评论时间

640?wx_fmt=png



获取评论内容的代码如下:
# 获取评论
    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中。

640?wx_fmt=png



通过词云图去分析去展示一下网友们都说了啥

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)

640?wx_fmt=png


在看MV中,有这样一个镜头,女主拿着一个粘着“话题No.1”的牌子,对应的歌词是:“到这个时候你还在意着,别人是怎么看我的”,不仅让人想到了前段时间一群“老年”网友在微博上为杰伦疯狂打榜的事情。看来周董是都把感谢藏了进去

640?wx_fmt=png


以上仅展示部分代码,完整代码已上传GitHub (点击阅读原文直达)

https://github.com/python3xxx/Jay_qq_comment

长按|关注|学Python|

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值