前言

那么今天我们就来爬一波网易云个人听歌排行榜吧。让我们愉快地开始吧~

开发工具

Python版本:3.6.4

相关模块:

argparse模块;

DecryptLogin模块;

prettytable模块;

以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

DecryptLogin安装方式参见(因为经常更新,已经安装过的小伙伴麻烦记得更新一下,否则可能会在新的案例中报错)

原理简介

首先,打开网易云,随便找个用户刷新他的听歌排行榜页面并抓包:

发现只要请求类似这样的链接就可以获得该用户的听歌排行榜了:

https://music.163.com/weapi/v1/play/record?csrf_token=90f3b95109118c7335b896e2c24d7ebd

返回的数据是这样的:

现在考虑一下怎么构造这个请求,首先是csrf_token这个东西从哪来,之前的文章其实说过,在用户登录后的cookies里可以直接找到该参数,如下图红框所示(当然如果在非登录状态下也能看到目标用户的听歌排行榜,那么这个csrf_token其实是可有可无的):

接着考虑一下怎么算post参数,因为DecryptLogin库里已经写好了,所以我们这里只考虑怎么得到post数据的原文,查看一下initiator,发现Ajax请求的发起方是某core.js文件:

点进去在对应的位置打个断点(也就是需要用post数据的原文来计算最终的post参数的函数那里,至于怎么找到的,全局搜索encSecKey,然后简单分析一下它的计算流程就可以找到了这个函数啦),然后重新运行一下脚本,我们就可以看到post数据的原文啦:

于是我们就可以愉快地开始写代码啦,核心代码如下:

'''获得某用户的听歌排行榜'''
def getLeaderboard(self, uid):url = 'https://music.163.com/weapi/v1/play/record?csrf_token=' + self.csrfdata = {'type': '-1','uid': uid,'limit': '1000','offset': '0','total': 'true','csrf_token': self.csrf}res = self.session.post(url, headers=self.headers, data=self.cracker.get(data))res_json = res.json()leader_board = {'weekData': [], 'allData': []}if res_json['code'] == 200:all_data = res_json.get('allData')for item in all_data:songname = item.get('song').get('name')songid = item.get('song').get('id')play_count = item.get('playCount')leader_board['allData'].append([songid, songname, play_count])week_data = res_json.get('weekData')for item in week_data:songname = item.get('song').get('name')songid = item.get('song').get('id')play_count = item.get('playCount')leader_board['weekData'].append([songid, songname, play_count])else:raise RuntimeError('Fail to get leaderboard for %s...' % uid)return leader_board

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地

Python系列模拟登录之网易云个人听歌排行榜爬取 !相关推荐

  1. python网易云听歌时长_网易云一起听歌时间怎么不变_一起听歌为什么一直一分钟_3DM手游...

    在网易云音乐中一起听歌的时候,是会显示用户听歌时间等信息的,但是有的小伙伴发现,自己听了很长时间的歌,听歌时长却一直不变,一直是1分钟,这是怎么回事呢?网易云一起听歌时间不变怎么办?下面我们就一起来看 ...

  2. 听歌识曲java_Android自定义View之继承扩展(仿网易云音乐听歌识曲)

    前言 上篇文章说到了自定义View的组合实战,链接:Android自定义View之组合实战(以支付宝页面为例) ,感兴趣的同学可以看看.今天要分享的是一个模仿网易云音乐听歌识曲界面的自定义View,实 ...

  3. python爬取网易云音乐热评_python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...

  4. Python爬取网易云音乐热歌排行榜Top200音乐

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  5. python爬取网易云音乐评论分析_Python爬取网易云音乐评论(附加密算法)

    网易云音乐,里面汇聚了哲学家,小说家,story-teller,皮皮虾等各种人才,某些评论非常值得收藏(甚至开了一个歌单专门收藏它们).竟然这么好玩,何不尝试把他们爬取下来呢? 前置需求 可选:fid ...

  6. python爬取网易云音乐评论分析_python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...

  7. python模拟登录qq账号密码_QQ邮箱模拟登录(密码、头像、QQ邮箱爬取)

    密码登录 from selenium import webdriver #导入webdriver from selenium.webdriver.chrome.options import Optio ...

  8. 网易云音乐听歌量爬虫(免登陆版)

    最近学习了一下爬虫的原理和基本的思路, 并且利用selenium + Python + Chrome 进行了一系列的爬虫. 最开始的想法是, 想每天爬取自己网易云音乐的一些数据, 比如每天听歌量, 之 ...

  9. Chrome插件:网易云音乐听歌识曲

    大家好,我是若川.持续组织了8个月源码共读活动,感兴趣的可以 点此加我微信ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

最新文章

  1. 1万粉的小红书kol报价_小红书母婴博主资源怎么找?小红书母婴种草软文撰写技巧分享!...
  2. 哪些业务流程和RPA更匹配?
  3. [原]消耗CPU资源的shell脚本
  4. [JSOI2007]麻将
  5. Python 中print 和return 的区别
  6. systemd-run 中文手册
  7. c语言recover函数的功能是,c语言实验报告(附答案版).doc
  8. 《Algorithms》Comparable 实现选择排序
  9. VS2008引用webservice的奇怪BUG解决方案
  10. VLFeat工具包在matlab使用方法
  11. esp-idf的内存管理——tlsf算法
  12. 星空特效HTML代码,旋转的星空特效代码
  13. angularjs+uib-pagination实现同一页面多个分页功能
  14. 交叉编译wpa_supplicant常见问题总结
  15. Android apk瘦身
  16. 一些有难度的网络流问题
  17. 显示器接服务器后黑屏,笔记本外接显示器黑屏怎么修复_笔记本外接显示器后黑屏的处理方法...
  18. VMware虚拟机的创建和启动,保姆式教学
  19. 杰理之MIC 免电容方案需要设置【篇】
  20. 为什么很多人工作都不开心?

热门文章

  1. 稳定性高可用测试——各大厂质量保障实践分享汇总(上)
  2. android 循环录像功能吗,行车记录仪到底要不要循环录像
  3. 苹果手机怎么连接蓝牙耳机_苹果手机用什么蓝牙耳机好,适配iphone手机的蓝牙耳机...
  4. 民事诉讼法 主编 田平安
  5. 立即报名 | 云原生技术交流 Meetup 广州站已开启,8 月 6 号与你相遇!
  6. Fast Extrinsic Calibration of a Laser Rangefinder to a Camera阅读理解
  7. 3D ConvNet Demo运行
  8. java 显示中文_java显示中文乱码的解决方法
  9. 今天心情不错,写个随笔。
  10. dmg写入u盘_轻松教大家用U盘安装Mac OS10.14.1双系统