zoukankan      html  css  js  c++  java
  • 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()

    爬取结果:


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

    热门评论词云图:

  • 相关阅读:
    C语言文件操作函数大全
    iOS
    HDU 5042 GCD pair 预处理+二分 分段
    swoole新手教程01-环境搭建及扩展安装
    Cocos2d-X中的Slider控件
    CSS之BFC
    代理server的概要知识
    C#比較对象的相等性
    Effective C++ 35,36,37
    oled屏幕
  • 原文地址:https://www.cnblogs.com/yangshijia/p/8980976.html
Copyright © 2011-2022 走看看