爬取QQ音乐(讲解爬虫思路)

摘要:
这一切都是关于将歌曲信息放入播放界面进行播放。我们所有人都在努力发挥网站参数。(1) 歌曲菜单界面(2)歌曲ID信息(3)播放网站的分析(3)实现步骤:爬行器的基本思想是按照所需信息按相反顺序一步一步地向上推。1.回放接口的请求参数(1)一个回放接口(2)通过观察可以看到另一个回放界面。2.查看vkey所在的文件(1)由于我们在回放界面上单击了它,因此我们需要返回回放界面以查找信息。

一、问题描述:

本次爬取的对象是QQmusic,为自己后面做django音乐网站的开发获取一些资源。

 

二、问题分析:

由于QQmusic和网易音乐的方式差不多,都是讲歌曲信息放入到播放界面播放,在其他界面没有media的资源,喜马拉雅的则不是这样的,可以参考我爬取喜马拉雅的blog与代码:https://www.cnblogs.com/future-dream/p/10347354.html

1.由于上述原因,我们需要对网页进行分析:

获取歌曲菜单的id——>歌曲的所有id信息——>播放网站URL的构建,我们所有的一切都是为播放网站参数需要而努力,得到了对应的参数剩下的就很简单。

(1)歌曲菜单界面

爬取QQ音乐(讲解爬虫思路)第1张

 

(2)歌曲id信息

爬取QQ音乐(讲解爬虫思路)第2张

 

(3)播放网站的解析

爬取QQ音乐(讲解爬虫思路)第3张

 

三、实施步骤:

爬虫基本的思路都是倒序根据需要的信息一步一步往上推

1.播放界面的请求参数

(1)一个播放界面

爬取QQ音乐(讲解爬虫思路)第4张

 

(2)另一个播放界面

爬取QQ音乐(讲解爬虫思路)第5张

通过观察我们可以看到,只有vkey参数不一样,而我们的目的也是得到这个vkey参数,这样可以完成对歌曲内容的获取。

 

2.查看vkey所在的文件

(1)由于我们是在播放界面点出来的因此需要回到播放界面去查找信息,可以通过对id进行查询,可以看到如图灰色的响应,包含了所有关于歌曲信息的url信息。

爬取QQ音乐(讲解爬虫思路)第6张

 

(2)查看参数可以知道我们需要的参数,注意:第一个参数是可有可无的,因此就省去这个参数。

爬取QQ音乐(讲解爬虫思路)第7张

 

(3)对比参数,查看变量参数,可以看到只有songmid不一样因此在解析的时候只需要songmid需要改变。

爬取QQ音乐(讲解爬虫思路)第8张

爬取QQ音乐(讲解爬虫思路)第9张

 

3.获取songmid

(1)我们根据响应可以知道我们是通过歌单的信息获取歌曲的列表,在通过歌曲的列表获取歌曲的songmid。

爬取QQ音乐(讲解爬虫思路)第10张

 

(2)通过获取的song_list获取到songmid

爬取QQ音乐(讲解爬虫思路)第11张

 

(3)查看请求头的信息,观察变化的参数

1.一个请求头的信息

爬取QQ音乐(讲解爬虫思路)第12张

 

2.另一个请求头的信息

爬取QQ音乐(讲解爬虫思路)第13张

通过请求头都分析我们只需要改变disstid的参数就可以获取到所有的歌曲信息。

 

4.获取disstid的信息

(1)首先查看disstid在那个文件中

爬取QQ音乐(讲解爬虫思路)第14张

 

(2)查看请求头,其中rnd的信息可以不要为空就可以了。

爬取QQ音乐(讲解爬虫思路)第15张

 

(3)获取disstid

爬取QQ音乐(讲解爬虫思路)第16张

 通过倒推的方法,可以成功解析歌曲的信息,剩下的就是代码实现。

 

四、成果展示与总结:

1.展示

爬取QQ音乐(讲解爬虫思路)第17张

2.总结

一步步分析,在解析vkey的时候第一个很奇怪的参数就可以省略,在进行爬虫爬取的时候也要注意这些问题,有时候的参数是可以省略的,因此在构造请求信息的时候就可以省略

参数的信息,由于QQmusic采取的都是json格式的文件,所以在解析的时候比较简单,也很快速,这也是结构化数据的信息的特点。

五、源码:

https://github.com/pzq7025/Spider

免责声明:文章转载自《爬取QQ音乐(讲解爬虫思路)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇文字转语音SpeechSynthesisUtterance2019学期第一周编程总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

白话地图投影之Proj.4地图投影库简介

  Proj.4是开源GIS最著名的地图投影库,许多GIS开源软件的投影都直接或简介的使用Proj.4的库, 该项目遵循MIT license,用C语言编写,由USGS的Gerald I. Evenden在1980年代创立并一直维护到退休,后转手到Frank Warmerdam手中。Warmerdam现任OSGeo主席,于2008年5月把Proj.4纳入成...

【完整版】前端签名加密算法

需求:对公司项目敏感数据,使用前后端进行接口加密处理。 参考资料:https://www.jianshu.com/p/a47477e8126a (采用的是 AES + BASE64 算法加密) 依赖导入: import './core.js' import './md5.js' 扫盲: crypto-js 是一个纯 javascript 写的加密算法类库...

通达OA 11.5 SQL注入漏洞复现

0x00 漏洞描述  通达OA 11.5存在sql注入 0x01 漏洞影响版本  通达oa 11.5 0x02 漏洞复现 1、下载通达OA 11.5 https://cdndown.tongda2000.com/oa/2019/TDOA11.5.exe,点击安装 2、创建一个普通账户test:test123456 3.1、id参数存在sql注入 利用条...

Shell篇(三)TC Shell

Shell脚本的首行一般写为"#!+路径"来告诉系统,以路径所指定的程序来解释此脚本。              可以写为 #! /bin/tcsh -f (-f表示快速启动,不启动~/.tcshrc) Shell中的单引号' '  表示当Shell碰见第一个单引号时,它会忽略其后直到右引号的所有特殊字符。一般可用在alias              a...

flask中路由系统

flask中的路由我们并不陌生,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 1.@app.route()装饰器中的参数 methods:当前url地址,允许访问的请求方式 @app.route("/info", methods=["GET", "POST"]) def student_info(...

360独角兽实习,连载周记(gnuradio 低功耗蓝牙BLE 综合工具模块编写)

(有点乱,之后会有整理) 最近在用写一套gnuradio的OOT模块,主要用来进行BLE嗅探的,github上有了一些工具,可是他们并没有很好的模块化,于是打算自己写一个,这样以后做一些其他的项目,模块可以在grc流图里直接用,复用性会好很多。 我在github上找到了一个项目叫做BLE_dump,我参考了他的解调方式,事实证明这种解调方式的效果非常好,具...