Python爬虫采集网易云音乐热评实战
【Python爬虫采集网易云音乐热评实战】前一段时间刚刚入门python爬虫 , 有大概半个月时间没有写python了 , 都快遗忘了 。 于是准备写个简单的爬虫练练手 , 我觉得网易云音乐最优特色的就是其精准的歌曲推荐和独具特色的用户评论 , 于是写了这个抓取网易云音乐热歌榜里的热评的爬虫 。 我也是刚刚入门爬虫 , 有什么意见和问题欢迎提出 , 大家一起共同进步 。
私信小编01即可获取大量Python学习资料废话就不多说了~
我们的目标是爬取网易云中的热歌排行榜中所有歌曲的热门评论 。 这样既可以减少我们需要爬取的工作量 , 又可以保存到高质量的评论 。
首先 , 我们打开网易云网页版 , 如图:
文章插图
点击排行榜 , 然后点击左侧云音乐热歌榜 , 如图:
文章插图
?
我们先随便打开一个歌曲 , 找到如何抓取指定的歌曲的热门歌评的方法 , 如图 , 我选了一个最近我比较喜欢的歌曲为例:
文章插图
?
进去后我们会看到歌评就在这个页面的下面 , 接下来我们就要想办法获取这些评论 。
接下来打开web控制台(chrome的话打开开发者工具 , 如果是其他浏览器应该也是类似) , chrome下按F12 , 如图:
文章插图
?
选则Network , 然后我们按F5刷新一下 , 刷新之后得到的数据如下图所示:
文章插图
?
可以看到浏览器发送了非常多的信息 , 那么哪一个才是我们想要的呢?这里我们可以通过状态码做一个初步的判断 , status code(状态码)标志了服务器请求的状态 , 这里状态码为200即表示请求正常 , 而304则表示不正常(状态码种类非常多 , 如果要想详细了解可以自行搜索 , 这里不说304具体的含义了) 。 所以我们一般只用看状态码为200的请求就可以了 , 还有就是 , 我们可以通过右边栏的预览来粗略观察服务器返回了什么信息(或者查看响应) 。 通过这两种方法结合一般我们就可以快速找到我们想要分析的请求 。 通过反复的查找 , 终于找到了含有歌评的请求 , 如图:
文章插图
?
可能截图在CSDN上不是很清楚 , 我们在一个Name为R_SO_4_489998494?csrf_token=的POST请求中找到了包含这首歌的歌评 。 我们把这个分块截图发出来 , 这样可以看的清楚一些:
请求基本信息:
文章插图
?
请求头部:
文章插图
?请求中的表单数据:
文章插图
?
我们可以看到 , 包含这首歌歌评的请求url为, 我们换了几首歌后发现 , 这个请求的前部分都是一样的 , 只是R_SO_4_后面紧跟的一串数字不一样 。 我们可以推测出 , 每一首歌都有一个指定的id , R_SO_4_后面紧跟的就是这首歌的id 。
我们再看一下提交的表单数据 , 我们会发现表单中需要填两个数据 , 名称为params和encSecKey 。 后面紧跟的是一大串字符 , 换几首歌会发现 , 每首歌的params和encSecKey都是不一样的 , 因此 , 这两个数据可能经过一个特定的算法进行加密过的 。
服务器返回的和评论相关的数据为json格式的 , 里面含有非常丰富的信息(比如有关评论者的信息 , 评论日期 , 点赞数 , 评论内容等等) , 其中hotComments就是我们要找的热门评论 , 总共15条 , 如图所示:
文章插图
?
至此 , 我们已经确定了方向了 , 即只需要确定params和encSecKey这两个参数值即可 。 但是这两个参数是经过特定的算法进行加密的 , 怎么办呢?我发现了一个规律 , 中 R_SO_4_后面的数字就是这首歌的id值 , 而对于不同的歌曲的param和encSecKey值 , 如果把一首歌比如A的这两个参数值传给B这首歌 , 那么对于相同的页数 , 这种参数是通用的 , 即A的第一页的两个参数值传给其他任何一首歌的两个参数 , 都可以获得相应歌曲的第一页的评论 , 对于第二页 , 第三页等也是类似 。 而我们其实只需要获取第一页的15条热门评论 , 所以我们只需要随便找一首歌 , 将这首歌第一页中的该请求中的params和encSecKey这两个参数值复制下来 , 就可以使用了 。 关于这两个参数如何解密 , 强大的知乎上其实已经有答案的了 , 感兴趣的朋友可以进去看一下() , 我们在这里就只需要用我们这种偷懒的办法就可以完成需求了 , xixi 。
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1
- Python调用时使用*和**
- 如何基于Python实现自动化控制鼠标和键盘操作
- 解决多版本的python冲突问题
- 学习python第二弹
- Python中文速查表-Pandas 基础
- 零基础小白Python入门必看:通俗易懂,搞定深浅拷贝
- Python 使用摄像头监测心率!这么强吗?
- 十分钟教会你使用Python操作excel,内附步骤和代码