Python爬虫实战----音乐网页解析

优采云 发布时间: 2022-06-18 05:58

  Python爬虫实战----音乐网页解析

  在这里讲一下,下面的内容仅供学习参考,切莫用于商业活动!!!!!!!!!!!读者切记切记。本文章目的是讲述常用库的操作以及爬虫技术,大家请学习技术,不要将其应用为损害他人利益的活动,本文涉及的内容均为例子,并无危害他人利益之意,请勿贪图小便宜。文明爬虫,从我做起,让我们一起努力建设一个绿色,安全有秩序的网络空间.

  

  最近闲的没有事,想搞点小项目,恰好py的爬虫最近用起来比较顺手。

  就想搞个爬虫的小项目

  搞什么呢?

  经过深思熟虑,

  决定搞一个音乐的 解 析,

  说干就干,我先去找了找文章,发现大家的文章比较局限(也可能是我没找到),大部只讲述了如何找到服务器返回的歌曲文件链接↓

  

  

  但是如果只局限于通过抓取的方式获得音乐下载链接,那也太局限了。

  一点也不自动化,这样爬虫就失去了它作为一个工具的意义。

  

  所以说,一个能够提供搜索,选择,下载*敏*感*词*服务的程序,才能够符合正常人的使用和操作逻辑。

  分析音乐的网页版的搜索逻辑

  因为用户如果想要寻找歌曲,官方网页上的搜索结果是最好可以利用的信息,分析搜索至关重要

  寻找服务器返回搜索结果的js文件

  先搜索任意曲名

  用开发者工具监视服务器返回数据(有爬虫基础者可以 skip)

  

  我也是翻遍了所有服务器返回的所有js文件,终于找到了这样一个名叫song?callback=callback123……的文件

  

  这个js文件里面包含了搜索的所有结果,包括歌曲的基本信息,还有就是用来获取音乐链接的关键参数----AlbumID和hash。

  但是只用浏览器自带的js文件预览功能来看(Chromium内核的都不咋地,别提其他内核了),很容易眼花缭乱,找不到键值对的绝对路径很难办。

  这里给大家推荐一个在线格式化json的网站 JSON格式化 - 在线工具 - OKTools

  它不但包含json格式化,还包含各种常见转码工具,清新无广,非常方便。

  

  把整个文件的内容复制到这个网页,稍加寻找,可以发现歌曲的名字和作者

  

  路径*敏*感*词*↑

  由于搜索结果每一首歌的信息作为lists中的一个元素呈现

  这样,我们遍历列表,不就可以获取到所有搜索结果吗。

  

  问题来了 那就是怎么获取到这个js文件呢

  分析他的链接

  我们以WannaBe-Unlike Pluto为例

  <p style="vertical-align:inherit;">https://complexsearch.kugou.com/v2/search/song?callback=callback123&keyword=wannabe&page=1&pagesize=30&bitrate=0&isfuzzy=0&tag=em&inputtype=0&platform=WebFilter&userid=0&clientver=2000&iscorrection=1&privilege_filter=0&token=&srcappid=2919&clienttime=1644461542416&mid=1644461542416&uuid=1644461542416&dfid=-&signature=B624765F79E99C7B1D9910C9E8A7EEFD

  <br /></p>

  我也尝试过简化这个链接。结果发现简化任何东西都会报错

  

  分析错误可得error_msg可知是err signature,也就是签名错误

  那我们就需要破解这串签名,但我尝试了base64等等常见加密方式,均无果

  最终但在这篇文章的启迪下,我了解到了加密逻辑↓

  Python爬虫:通过做项目,小编了解了酷狗音乐的加密过程_il_持之以恒_li的博客-CSDN博客

  这是包含加密逻辑的js文件部分↓

  

  

  

  

  

  

  

  

  也就是说,能get到搜索后服务器反馈的结果链接

  当我们运行如上图的py脚本时

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线