前言

作为网易云村的深度用户,网易云音乐应该是我除了微信外打开时间最长的 App 了。并不是应为网易云上面的歌曲多,而是因为那些走心的评论。边听歌边刷评论,感觉就像是走进了他人的人生之中,从另外一种意义来讲也是让自己有限的人生得以延长,变得更加多姿多彩。

直到有一天我像往常一样划拉着评论,一不小心手指触碰到了某个用户的昵称,然后就去到了他的个人主页。咦,原来这里是可以点进去的啊,在他的个人主页我可以看到他的听歌排行榜、创建的歌单以及收藏的歌单,而且我并没有关注他。

此时的我突然灵机一动,岂不是可以用这个来查看小姐姐最近都在听什么类型的歌,而且歌曲在一定程度上还反映了听歌人的心情,真是一举两得呀。

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

点击加群即可免费获取Python学习资料

接口分析

首先我们进打开网易云网页版,随便选取一首歌后进入其评论列表,然后再选取一个评论者进入到他的个人主页,不出意外的话就可以看到他最近的听歌排行了。

来,我们观察下 URL,它应该像是下面这个样子的。为了保护用户隐私我隐藏了最后四位数字。仔细看这 URL 我们猜测最后的参数应该是用户的唯一 ID 标识,那么我们如何才能获取到小姐姐的网易云 ID 呢。别急,下文会说。

https://music.163.com/#/user/home?id=4682****

接着按 F12 打开浏览器开发者调试窗口,刷新页面分析下网络请求。

嗯,就是这个接口了,返回的数据有 100 条记录,我们可以点击网页「听歌排行」右下角的「查看更多」来确认下,发现确实是只能查看最近的 100 首

获取数据

接口获取到了,剩下获取数据的工作就不难了,直接写一个爬虫爬下来即可。

import requests
import json# 模拟浏览器请求
headers = {'Referer': 'http://music.163.com/','Host': 'music.163.com','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36','Accept': '*/*',
}# 构建 URL 以及 POST 参数
url = 'https://music.163.com/weapi/v1/play/record?csrf_token='
data = {'params': 'xrJhjXYUqEWa98DVbFtw6yTygOTCOvSAypxfWNr5kpw/MEvXsRk+Av+DNF7zY9a1oA95FBTXdW9s/MJV+eQVfCGi+/NVW7nD0igfJSsmDtE3VpM422dZR6WJGDxS3/se00qFFHx6wumfLzc9mgnfB5hGkrBwF9+P/7zamjfWSOUfvvUuWhM2Gd7z2pA11lMB','encSecKey': '2371bb4de91d5de7110722d3491c7cf6d3f6f5cdcbc16a5e9c7456e4b9075c1965d851d4920fa51adae6ff1c7b722539fb03dd2ab148894c2dc9c8ba0bbb5e95bbbd2bf4fbf02023cf63391f74b6956339cb72fa32a4413de347ffb536299f5711fe02fe60f66b77ac96a16a6bcb5ba14cf9b1609ddf8e8180d683bba5801acf'
}# 发送 post 请求,第一个参数是 URL,第二个参数是请求参数
req = requests.post(url, data)  print(json.loads(req.text))# 输出结果
{"allData":[{"playCount":0,"score":100,"song":{"name":"盛夏光年 (2013版)","id":28181110,"pst":0,"t":0,"ar":[{"id":13193,"name":"五月天","tns":...

注意,因为我们最后要获取的是歌手的名字。所以,需要将获取到的数据结果格式化一下。

result = json.loads(req.text)
names = []
for i in range(100):names.append(result['allData'][i]['song']['ar'][0]['name'])# 准备生成云图的字符串
text = ",".join(names)

生成云图

最后,将我们上面获取到的歌手集合生成一张词云图即可。

import matplotlib.pyplot as plt
from wordcloud import WordClouddef show_word_cloud(text):wc = WordCloud(font_path='/System/Library/Fonts/PingFang.ttc', background_color="white", scale=2.5,contour_color="lightblue", ).generate(text)# 读入背景图片WordCloud(background_color='white', scale=1.5).generate(text)plt.figure(figsize=(16, 9))plt.imshow(wc)plt.axis('off')plt.show()

最后,万事俱备,就差小姐姐的网易云用户 ID 了。其实很简单,找一下她之前给你分享过的歌曲记录就可以啦,微信打开歌曲链接,点击右上角三个点,然后选择「复制链接」,之后你会得到类似下面的一个链接。没错,那个 userid就是用户唯一标识了。

https://y.music.163.com/m/song?id=4587****&userid=4682****&from=message

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:派森酱

Python爬虫实战:爬取小姐姐最近的听歌曲目相关推荐

  1. python网易云听歌时长_Python爬虫实战:爬取小姐姐最近的听歌曲目

    前言 作为网易云村的深度用户,网易云音乐应该是我除了微信外打开时间最长的 App 了.并不是应为网易云上面的歌曲多,而是因为那些走心的评论.边听歌边刷评论,感觉就像是走进了他人的人生之中,从另外一种意 ...

  2. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  3. python爬虫实战---爬取大众点评评论

    python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  4. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  5. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  6. python爬虫实战--爬取猫眼专业版-实时票房

    小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...

  7. python爬虫实战-爬取小说

    今天做一个爬虫练手的小实战:爬取顶点小说网的小说,实现下载到本地(虽然网站上本来就可以下载,不过还是自己写代码来有成就感嘛!) 爬取网站 进入官网后,点击元尊,就爬取这本书了. 我们先把整个网页爬下来 ...

  8. python爬虫淘宝实例-Python——爬虫实战 爬取淘宝店铺内所有宝贝图片

    之前用四篇很啰嗦的入门级别的文章,带着大家一起去了解并学习在编写爬虫的过程中,最基本的几个库的用法. 那么今天,我们就正式开始我们的第一篇实战内容,爬取一整个淘宝店铺里的所有宝贝的详情页,并且把详情页 ...

  9. Python爬虫实战- 爬取整个网站112G-8000本pdf epub格式电子书下载

    (整个代码附在最后) 目录: 爬虫准备 - 某电子书网站内容架构分析 爬虫前奏 - 网站Html代码分析,如何获取需要的链接? 爬虫高潮 - 测试是否有反爬虫措施,测试是否能正常下载一个sample ...

最新文章

  1. python pip管理工具
  2. JZOJ 5460. 【NOIP2017提高A组冲刺11.7】士兵训练
  3. git 分支合并_批量删除GIT已合并到master的分支
  4. IntelliJ IDEA 16创建Web项目
  5. 26 MM配置-采购-采购申请-定义编码范围
  6. FlashFXP列表参数错误解决方法
  7. 为什么要用Vue.js的组件化开发
  8. 如何在Mac上禁用iCloud驱动器?
  9. python 如何封装dll_python怎么封装dll
  10. unity将预制体写成fbx_unity 将fbx转成prefab
  11. css被点击后改变样式,Js 通过点击改变css样式
  12. C语言Dialogbox添加图片,c# dll c 类_dialogboxparam_msg结构
  13. 连接防火墙/路由器的几种方式
  14. execjs 调用js出现找不到windows对象
  15. ubuntu20.04安装PX4固件错误总结
  16. SAP SD基础知识之免费货物(Free Goods)
  17. RDKit | 子结构搜索和MCS算法
  18. [攻略][Python]给array类型的数据添加方括号、去掉方括号
  19. Cultrue ‘zh-hans’ is a neutral cultrue报错解决办法
  20. 《操作系统真象还原》第十五章 ---- 实现系统交互 操作系统最终章 四十五天的不易与坚持终完结撒花 (下)(遗憾告终)

热门文章

  1. 同盾科技声纹识别建模大赛
  2. 【python】把Excel中的数据在页面中可视化
  3. 配置linux的jdk报错error while loading shared libraries: libjli.so
  4. POJ 1389 Area of Simple Polygons(扫描线求面积)
  5. 2023年进入TK海外直播公会,应该怎么玩?怎么申请?
  6. 转载文章-【工具】10分钟快速搭建属于自己的文档网站-来自掘金
  7. 机械臂抓取学习笔记四
  8. 机械臂抓取学习笔记二
  9. 分布式链路监控Zipkin + EKL + RabbitMQ
  10. TOJ2333 Feel Good