• Python学习-使用Python爬取陈奕迅新歌《我们》网易云热门评论


    《后来的我们》上映也有好几天了,一直没有去看,前几天还爆出退票的事件,电影的主题曲由陈奕迅所唱,特地找了主题曲《我们》的MV看了一遍,还是那个感觉。那天偶然间看到Python中文社区公众号推送了一篇文章《用Python爬取陈奕迅新歌《我们》10万条评论的新发现》。最近一直在学习Python,想着找一个有趣的项目做一个练习,于是就模仿作者的代码开始练习,原文中作者在题目中说是“10万条评论的新发现”,通过程序运行,发现作者并没有对所有评论进行爬取,只是爬取了网易云音乐中《我们》这首歌的热门评论,并根据数据绘制了图表。

    网易云《我们》

    代码:

     1 #!/usr/bin/env python3
     2 # -*- coding: utf-8 -*-
     3 # @Time    : 2018/4/29 18:09
     4 # @Author  : yang
     5 # @File    : Code.py
     6 # @Software: PyCharm
     7 import requests
     8 import json
     9 
    10 #爬取陈奕迅的《我们》的热门评论
    11 #参数:url,headers,user_data(params,encSecKey)
    12 url = 'http://music.163.com/weapi/v1/resource/comments/R_SO_4_551816010?csrf_token='    #评论所在的链接
    13 headers = {
    14     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
    15     'Referer':'http://music.163.com/song?id=551816010',
    16     'Origin':'http://music.163.com',
    17     'Host':'music.163.com'
    18 }
    19 #加密数据,直接拿过来用
    20 user_data = {
    21     'params':'60e75d03+rb9U8IQhy6/9+H1si5pp7qLysZoQsYG9qFkXtXL9dRKMfchCKpJ8OpN9m7vSRVkYWN+wscyUqelunqxGDozt2bJWQ2QRj4pJrSa0xoJPAk5Jw8t70rYW8hwdyoYswl+kRQTQ6oz3eHHZ5BLzZZB4t/4asFSQQDnCteg2GqrEJBomMgpFMIa4Ybt',
    22     'encSecKey':'52db8824c86503bc2cfc050ac78969c9155ff08f274f88b767ad6535febcbad021d0cdabcc172e01f91c42a2aca0786e407935f8feaa44a03efb96ec9d71de181e92ae8471738e4a43b252f22b46739cb3b86544a9f9403b0402bd9638a3bc2b87bf3a0b9cff6ef7b6b1589f00a5bfeecb9d45c493456082d80fbece6ac5a3fa'
    23 }
    24 
    25 response = requests.post(url,headers=headers,data=user_data)
    26 data = json.loads(response.text)
    27 hotcomments = []
    28 for hotcomment in data['hotComments']:
    29     item = {
    30         'nickname':hotcomment['user']['nickname'],
    31         'content':hotcomment['content'],
    32         'likedCount':hotcomment['likedCount']
    33     }
    34     hotcomments.append(item)
    35 #获取评论用户名,内容,以及对应的获赞数
    36 content_list = [content['content'] for content in hotcomments]
    37 nickname = [content['nickname'] for content in hotcomments]
    38 liked_count = [content['likedCount'] for content in hotcomments]
    39 
    40 #点赞数
    41 from pyecharts import Bar      #pyecharts:图表包
    42 bar = Bar('热门中点赞数示例图')
    43 bar.add('点赞数',nickname,liked_count,is_stack=True,mark_line=['min','max'],mark_point=['average'])
    44 bar.render()
    45 
    46 #词云图
    47 from wordcloud import WordCloud     #WordCloud:词云包
    48 import matplotlib.pyplot as plt     #matplotlib:绘图功能包
    49 content_text = ' '.join(content_list)
    50 wordcloud = WordCloud(font_path=r'C:simhei.ttf',max_words=200).generate(content_text)
    51 plt.figure()
    52 plt.imshow(wordcloud,interpolation='bilinear')
    53 plt.axis('off')
    54 plt.show()

    爬取结果:


    热门评论中点赞数示意图:

    热门评论词云图:

  • 相关阅读:
    准备 FRM 考试——方法、工具与教训
    930. 和相同的二元子数组 前缀和
    1906. 查询差绝对值的最小值 前缀和
    剑指 Offer 37. 序列化二叉树 二叉树 字符串
    815. 公交路线 BFS
    518. 零钱兑换 II dp 完全背包
    1049. 最后一块石头的重量 II dp
    5779. 装包裹的最小浪费空间 二分
    5778. 使二进制字符串字符交替的最少反转次数 字符串 滑动窗口
    474. 一和零 dp
  • 原文地址:https://www.cnblogs.com/yangshijia/p/8980976.html
Copyright © 2020-2023  润新知