目录

  • 一、获取网易云歌曲的url
  • 二、发送请求获取json
  • 三、生成词云

一、获取网易云歌曲的url

1、进入网页版网易云音乐,选择一首歌曲,进去评论区

2、接着F12进入开发者控制台(审查元素),我们在搜索框里输入comments即可找到对应的获取评论的api的url,点击它在右边选择Response就可以看到返回的json了。
右边进入Network->输入comments->左边选中评论->右边选择Response就可以看到返回数据了

3、我们只需要分析这个api并模拟发送请求,获取json进行解析就好了。右键复制这个url下来

https://music.163.com/weapi/v1/resource/comments/R_AL_3_36957040?csrf_token=2197fea5ca02ab0af26a1bbf2f79831a

4、从浏览器的上的地址可以发现以上url里R_AL_3_后的数字就是歌曲的id,如下图:

5、在开发者控制台里,点击Headers就可以看到请求方式为post,请求头里的表单数据有两个加过密的参数(paramsencSecKey)。经测试,每一页面的加密参数都不同,这里会影响我们爬取;不过对于我们爬取热门评论,第一页就够了。

二、发送请求获取json

0 总项目目录及需要的库:

1 解析url内容:
def parse_comments_json(comments_list, path):

2 获取热评:
def get_wangyiyun_hotcomments(url, path):

存入txt:

3 获取更多评论:

具体不知道有多少评论(我任意在1024条记录中取1024/20)

def draw_wordcloud(path):

三、生成词云

4 def draw_wordcloud(path):

左:热评、右:全部评论:(有点伤感了~)

全部源码:

# -*- coding:utf-8 -*-import requests
import json
import time
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import matplotlib.pyplot as plt
import numpy as npheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36",
}  # 模拟访问网页def parse_comments_json(comments_list, path):  # 获得接口,解析评论接口for hotComments in comments_list:print("==============================================")user_icon = hotComments.get('user').get('avatarUrl')print("user_icon: ", user_icon)userId = hotComments.get('user').get('userId')print("userId: ", userId)user_nickname = hotComments.get('user').get('nickname')print("user_nickname: ", user_nickname)comment_time = hotComments.get('time')print("comment_time: ", comment_time)comment_time = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(float(comment_time) / 1000))print(comment_time)comment_content = hotComments.get('content')print("comment_content: ", comment_content)zan_count = hotComments.get('likedCount')print("zan_count: ", zan_count)try:# 读写文件with open(path, 'a+', encoding='utf-8') as f:f.write(comment_content + "\n")  # 记录全部评论# f.write("\n user_icon: " + user_icon + "\n userId: " + str(userId) + "\n user_nickname: " + user_nickname + "\n comment_time: " +# comment_time + "\n comment_content: " + comment_content + "\n# zan_count: " + str(zan_count) + "\n")except Exception as e:passdef get_wangyiyun_hotcomments(url, path):  # 获取热评data = {'params': 'D33zyir4L/58v1qGPcIPjSee79KCzxBIBy507IYDB8EL7jEnp41aDIqpHBhowfQ6iT1Xoka8jD+0p44nRKNKUA0dv+n5RWPOO57dZLVrd+T1J/sNrTdzUhdHhoKRIgegVcXYjYu+CshdtCBe6WEJozBRlaHyLeJtGrABfMOEb4PqgI3h/uELC82S05NtewlbLZ3TOR/TIIhNV6hVTtqHDVHjkekrvEmJzT5pk1UY6r0=','encSecKey': '45c8bcb07e69c6b545d3045559bd300db897509b8720ee2b45a72bf2d3b216ddc77fb10daec4ca54b466f2da1ffac1e67e245fea9d842589dc402b92b262d3495b12165a721aed880bf09a0a99ff94c959d04e49085dc21c78bbbe8e3331827c0ef0035519e89f097511065643120cbc478f9c0af96400ba4649265781fc9079'}resp = requests.post(url, data=data, headers=headers)comments_dict = json.loads(resp.text)hotComments_list = comments_dict.get('hotComments')print(hotComments_list)parse_comments_json(hotComments_list, path)def get_wangyiyu_comments(url, path):  # 获取全部评论header = {'Accept': "*/*",'Accept-Language': "zh-CN,zh;q=0.9",'Connection': "keep-alive",'Host': "music.163.com",'User-Agent': "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"}n = 1for i in range(0, 1024, 20):  # 只打印0到1024中能被20整除的数(不一定有这么多)param = {'limit': str(i),'offset': str(n * 20 - 1)}n += 1response = requests.post(url, headers=header, params=param)comments_dict = json.loads(response.text)comments_list = comments_dict.get('comments')print(comments_list)parse_comments_json(comments_list, path=path)def draw_wordcloud(path):  # 制作评论词云bg_mask = np.array(Image.open('back.jpg'))text = open(path, encoding='utf-8').read()my_wordcloud = WordCloud(background_color='white',  # 设置背景颜色mask=bg_mask,     # 设置背景图片max_words=2000,    # 设置最大显示的字数font_path='C:\\Windows\\Fonts\\simsun.ttc',      # 设置中文字体,使的词云可以显示max_font_size=250,  # 设置最大字体大小random_state=30,   # 设置有多少种随机生成状态, 即有多少种配色方案)myword = my_wordcloud.generate(text)myword.to_file('cloud.jpg')plt.imshow(myword)plt.axis('off')plt.show()if __name__ == '__main__':url = "https://music.163.com/weapi/v1/resource/comments/R_AL_3_36957040?csrf_token="comments_url = "http://music.163.com/api/v1/resource/comments/R_AL_3_36957040"path = 'comment.txt'get_wangyiyun_hotcomments(comments_url, path)  # 热评start_time = time.time()# get_wangyiyu_comments(comments_url, path)  # 全部评论end_time = time.time()print("程序耗时%f秒." % (end_time - start_time))draw_wordcloud(path)

Python网络爬虫(三)网易云音乐热评相关推荐

  1. python网络爬虫网易云音乐_一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取...

    标签下,如下图所示: 接下来我们利用美丽的汤来获取目标信息,直接上代码,如下图: 此处要注意获取ID的时候需要对link进行切片处理,得到的数字便是歌曲的ID:另外,歌曲名是通过get_text()方 ...

  2. python作业记录--爬虫,网易云音乐热评+词云生成

    import requests import json import re import random from Crypto.Cipher import AES from base64 import ...

  3. 手把手教你用Python网络爬虫获取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

  4. Selenium爬取36万条数据告诉你:网易云音乐热评究竟有什么规律?

    网易云音乐火不火我不知道,可是评论很火,之前也见过不少的帖子抓取网易云音乐评论,今天咱们也来试试 这篇文章主要介绍了python selenium爬取网易云音乐热评,文中通过示例代码介绍的非常详细,对 ...

  5. 小猿圈分享利用python网络爬虫获取网易云歌词

    今天小猿圈给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本 ...

  6. python音乐的数据抓取与分析_python抓取网易云音乐热评做词图数据分析

    最近就有一部"怀旧"题材的电影,未播先火,那就是刘若英的处女作--<后来的我们>.青春,爱情,梦想,一直是"怀旧"题材的核心要素,虽然电影现在还未上 ...

  7. 网易云音乐热评详细源码-Python

    爬虫 & 数据分析 运行环境:python3.6 为方便理解,网易云音乐热评的爬取代码分为两部分 1. 先爬取每个歌单里的歌曲的url,导出到music1_01.csv文件中 2. 爬取每首歌 ...

  8. python网易云听歌时长_用Python爬取10w条网易云音乐热评并进行分析的方法总结

    有个段子讲"十年文案老司机,不如网易评论区,网易文豪遍地走,评论全部单身狗",网易云音乐的评论区也一直都是各类文案大神的聚集地. 那么我们普通用户到底如何成为网易云音乐评论里的热评 ...

  9. python爬取网易云音乐热评

    由于网易云音乐热评特别不错,所以前段时间无聊就看了一下怎么爬他们的热评 ,附上代码 这是直接爬出来的所有信息,需要在进行数据清洗下 不懂的可以私信我 import requestscookies = ...

  10. 网易云音乐评论墙php源码,网易云音乐热评墙那些令人感慨的句子,哪一句打动了你?...

    越来越多的人开始使用网易云音乐来听歌了,套用某位网友的一句话就是:"我来网易云不是来听音乐的,我是来看评论的!网易云的评论区一直是情感泛滥的"重灾区",这里有大家口耳相传 ...

最新文章

  1. C#之消息队列的简要说明
  2. python 数据逆时针旋转270度_Python自动耍俄罗斯方块
  3. vue是什么_什么是VUE?vue有什么作用?
  4. HDU-1698 JUST A HOOK 线段树
  5. opencv 4快速入门_茶知识|茶道核心4元素,看懂你也可以快速入门茶道!先收藏...
  6. Some about me
  7. CSS计数器(自定义列表)
  8. 华三交换机配置access命令_H3C交换机配置命令大全
  9. GoF--服务定位器模式
  10. 中国电信9月将率先推出5G新号段:资费也随之曝光 最高599元/月?
  11. CentosX64使用yum快速搭建xen虚拟化环境
  12. python怎么编写流氓软件_Python 编写强制性流氓软件, 可表白, 可其它!
  13. .Net下RabbitMQ的使用(4) -- 订阅和发布
  14. Object.freeze( ) 阻止Vue无法实现 响应式系统
  15. 目前国内最快最稳定的DNS
  16. mailgun php版本,使用 PHP mailgun 发送邮件
  17. 2021-10-11日python笔记(VM虚拟机安装Linux)
  18. usb接口驱动_win10系统USB接口没反应怎么解决
  19. itms-services php,APP发布系统 ipa文件上传和下载 itms-service协议
  20. 互联网日报 | 董明珠2020年直播带货476亿;滴滴橙心优选启动“小店战略”;苹果开始自研调制解调器...

热门文章

  1. SQL SERVE 的数据库安全性研究
  2. 定时密码锁屏Android下载,文字密码锁屏手机版下载
  3. 用Android打出马奔跑的动画,奔跑彩虹马百变版手机
  4. MySQL函数少传参数,MySQl函数(1)
  5. 计算机系统安全学术会议评价与排行
  6. 【漫画】谈谈中国的键盘侠们
  7. 基于java+ssm+vue+mysql的学生考勤管理系统
  8. java前端传到数据库显示问号?
  9. 热爆NFT“MetaBunny”公开发售后飙升近35倍 首轮公开发售达1,000枚后结束
  10. python3基础教程pdf下载-廖雪峰Python3基础教程完整版电子书免费下载