网上的爬取网易云评论的方法大多数是讲如何构建参数去破解它的一些加密,然后再去爬取评论。
但是我们可以通过网易云的API接口,因为它是属于非加密的get请求,所以难度就直线下降。
这里有一点需要注意:
在一首歌每页显示20条评论的情况下,只有前500页是不重复的评论,从500页之后都是第500页的内容。在网页端和pc端都是这样。也就是说我们只能爬取到最多2万条数据。
同时在XHR中发现获取不到的评论中间部分,确实是请求到了数据包,但内容均是第500页的重复内容。
之前看到过一篇文章,他在爬评论的时候竟然中间的一页,举个例子:一共2001页评论,正常只能爬取前500页或者后500页,同时他页爬取到了第1001页的真实数据,然后其他的都是第500页的重复数据。
感觉这也是网易云的一种类似反爬虫机制吧。
回归正题:这里我们完全没必要去考虑如何构造参数,如何去破解加密,直接调用网易云的API就好了:
# 网易云音乐评论API,其中********为音乐ID,limit为页面结果限制数,最大可设为100,offset为页面偏移量
http://music.163.com/api/v1/resource/comments/R_SO_4_********?limit=20&offset=0# 用户信息API
https://music.163.com/api/v1/user/detail/{用户ID}
这里我以野狼disco为例:

这里使用了开发者工具,如果有不知道的可以去下面的网址了解一下。

https://blog.csdn.net/zengzhenzong/article/details/80446732

下面就是代码了:
import json
import time
import requestsheaders = {'Host': 'music.163.com','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}def get_user(user_id):"""获取用户注册时间"""data = {}url = 'https://music.163.com/api/v1/user/detail/' + str(user_id)response = requests.get(url=url, headers=headers)# 将字符串转为json格式js = json.loads(response.text)if js['code'] == 200:# 性别data['gender'] = js['profile']['gender']# 年龄if int(js['profile']['birthday']) < 0:data['age'] = 0else:data['age'] = (2018 - 1970) - (int(js['profile']['birthday']) // (1000 * 365 * 24 * 3600))if int(data['age']) < 0:data['age'] = 0# 城市data['city'] = js['profile']['city']# 个人介绍data['sign'] = js['profile']['signature']else:data['gender'] = '无'data['age'] = '无'data['city'] = '无'data['sign'] = '无'return datadef get_comments(page):"""获取评论信息"""url = 'http://music.163.com/api/v1/resource/comments/R_SO_4_1313354324?limit=20&offset=' + str(page)response = requests.get(url=url, headers=headers)# 将字符串转为json格式result = json.loads(response.text)items = result['comments']for item in items:# 用户名user_name = item['user']['nickname'].replace(',', ',')# 用户IDuser_id = str(item['user']['userId'])# 获取用户信息user_message = get_user(user_id)# 用户年龄user_age = str(user_message['age'])# 用户性别user_gender = str(user_message['gender'])# 用户所在地区user_city = str(user_message['city'])# 个人介绍user_introduce = user_message['sign'].strip().replace('\n', '').replace(',', ',')# 评论内容comment = item['content'].strip().replace('\n', '').replace(',', ',')# 评论IDcomment_id = str(item['commentId'])# 评论点赞数praise = str(item['likedCount'])# 评论时间date = time.localtime(int(str(item['time'])[:10]))date = time.strftime("%Y-%m-%d %H:%M:%S", date)print(user_name, user_id, user_age, user_gender, user_city, user_introduce, comment, comment_id, praise, date)with open('music_comments.csv', 'a', encoding='utf-8-sig') as f:f.write(user_name + ',' + user_id + ',' + user_age + ',' + user_gender + ',' + user_city + ',' + user_introduce + ',' + comment + ',' + comment_id + ',' + praise + ',' + date + '\n')f.close()def main():# 前500页# for i in range(210000, 230000, 20):# 后500页for i in range(0, 25000, 20):print('\n---------------第 ' + str(i // 20 + 1) + ' 页---------------')get_comments(i)if __name__ == '__main__':main()
这里我就爬取前20页的评论。爬取完成后会生成一个.csv文件。我们想要获得的数据就在里面啦。

通过网易云API爬取评论相关推荐

  1. 网易云爬虫-爬取单曲和歌单所有歌曲

    网易云爬虫-爬取单曲和歌单所有歌曲   今天断网了 敲代码不听歌的程序员是没有灵魂的,但是本地下载又太繁琐了,想着能不能一下把一个歌单的内容按文件夹进行下载,说做就做. 首先网上已经有了网易云js加载 ...

  2. 爬虫python代码网易云_python爬取网易云音乐热歌榜实例代码

    首先找到要下载的歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更改你要保存的目录,目录要先建立好文件夹,例如我 ...

  3. java 歌词_网易云歌词爬取(java)

    网上也有很多人写过的,但感觉可能都不是很细,特此写了一份,不足之处请大家多多包涵 就以这首为例,给大家分享一下网易云歌词的获取 F12找到歌词的请求地址 0 通过观察可以发现就是这params和enc ...

  4. Python爬虫实战:网易云音乐爬取!

    本次目标 爬取网易云音乐 https://music.163.com/ PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击即可加入 环境 ...

  5. 网易云歌词爬取(java)

    网上也有很多人写过的,但感觉可能都不是很细,特此写了一份,不足之处请大家多多包涵 就以这首<凉凉>为例,给大家分享一下网易云歌词的获取 歌曲地址:https://music.163.com ...

  6. 爬取《Five Hundred Miles》在网易云音乐的所有评论

    本文原创发布于微信公众号「极客猴」,欢迎关注第一时间获取更多原创分享 在使用 Ajax 技术加载数据的网站中, JavaScript 发起的 HTTP 请求通常需要带上参数,而且参数的值都是经过加密的 ...

  7. 【python】爬虫入门:爬取网易云音乐的歌曲评论、用户歌单、用户听歌记录等

    目录 一.概述 二.爬取流程 1.爬取评论 1.1.资源定位 1.2.爬取准备 1.3.代码实现 2.爬取听歌记录 2.1.资源定位 2.2.爬取准备 2.3.js劫持 三.总结 一.概述 第一次学爬 ...

  8. 爬虫入门——用python爬取网易云音乐热门歌手评论数

    本文参考Monkey_D_Newdun 的文章 https://blog.csdn.net/Monkey_D_Newdun/article/details/79318629 用爬虫获取网易云音乐热门歌 ...

  9. 带你写爬虫(python)第二篇----抓取网易云音乐下面的评论(API方式)

    抓取网易云音乐<大学无疆>的评论 一直喜欢使用网易云音乐,网易云歌曲下面的评论给其加分不少,所以这一篇来写一下怎么抓取歌曲下面的评论. 准备工作 目标网页:http://music.163 ...

  10. 如何用 Python 爬取网易云音乐的 10w+ 评论?附详细代码解读

    在简单学习了Python爬虫之后,我的下一个目标就是网易云音乐.因为本人平时就是用它听的歌,也喜欢看歌里的评论,所以本文就来爬一爬网易云音乐的评论吧! 正式进入主题 首先是找到目标网页并分析网页结构, ...

最新文章

  1. python中的format什么意思中文-python的format什么意思
  2. ECC6.0中数据导出到本地时报错GETWA_NOT_ASSIGNED
  3. (转)Python3异常-AttributeError: module 'sys' has no attribute 'setdefaultencoding
  4. java线程本地变量_Java并发编程示例(九):本地线程变量的使用
  5. 【2021牛客暑期多校训练营5】K King of Range(单调队列)
  6. Linux dirname、basename 指令
  7. [手把手教你] 用Swoft 搭建微服务(TCP RPC)
  8. C++ 继承语法及修饰符
  9. springboot 使用mybatis与mybatis-generator与druid (gradle构建)
  10. JavaSE银行账户管理系统
  11. 图的邻接(链)表表示法 Graph adjacency list representation
  12. TS在前端发展的当前形式(愚见)
  13. Linux云计算好学吗?Linux云计算运维学习资料 文件的基本管理
  14. CCW:浪潮云+智能协同云平台获评“用户首选品牌”
  15. 【Android】 Firebase登录、FCM、Google Play支付、adbrix、ONEStore、Galaxy Store、Google Install Referrer
  16. ipad iphone开发_如何在iPhone或iPad上恢复已删除的照片
  17. 国际计算机编程大赛报名,关于举办2020年新生编程大赛的报名通知
  18. 短信接口被恶意调用?企业短信防火墙+【中昱维信】短信验证码【Java】
  19. 守望先锋打开黑屏闪退,已经重装过好几次都没用? 真正原因在这里
  20. Git安装包(win版)

热门文章

  1. 基于数电的交通灯控制器
  2. MATLAB与高等数学--dsolve命令
  3. 基于matlab测量物体直径,基于MATLAB的不规则面积图像测量
  4. 网页中文转英文(国际化)
  5. 法国在华企业名单,坚决抵制!
  6. 尤克里里C大调下DO RE MI FA SOl LA XI的这几个音是怎么按的以及为什么这么按
  7. java while 死循环_java while (true) 死循环
  8. OSChina 周一乱弹 —— 程序猿到底是多有才?
  9. 智协云店通+BitCOO加入4WiN.io全球互贸链 | 翼次元空间+Fund++
  10. mac读取ntfs移动硬盘