最近想爬取一些音乐来实战一下,选择了qq音乐。
qq音乐明显的就是一个动态网页,所以需要抓包了。
不懂的关键词可利用好搜索引擎。
分析过程
在此就说说分析的大致过程吧。
先看看主页:
我们随便点开一个主题列表:
因为是动态网页,所以就在这里抓包吧,因为qq音乐是动态网页,需要相关的参数信息才能得到想要的音乐地址,随便以播放一首歌曲为例,如下图1中的歌曲ID,点进去这个看看,即点击播放按钮,发现来到了播放页面,打开我用的Chrome中的开发者工具,里面有我们想要的音乐地址(如下图2所示),图3展示得到列表歌曲的所有信息,需要编程清洗之后才能得到我们想要,在此会在下面的代码中标明。
- 图1:
- 图2:
- 图3:
其中的URL地址,代码中会用到:
现在我们可能就会有思路出现了:抓包爬取列表的所有歌曲的ID号以及歌曲信息 –> 整合到以ID为基的html地址 –> 到播放页面利用beautiful模块爬取相关的音乐地址即可!so easy~
但经过我的测试说明,爬取播放页面的html信息是没有相关的音乐地址的,所以在得到歌曲ID信息,整合到以ID为基的html地址之后,我们还需要对播放页面进行抓包。下面说说如何在播放页面抓包。
先播放一首歌曲,再进行抓包,发现了这些信息(如下图1),再结合上面的音乐地址分析一下,发现了vkey信息的存在,即每一首歌的vkey信息是不同的,并且经过测试即便是同一个ID,vkey也是一直不断自动变换着的,不过在测试之后可得出结论:只要得到vkey信息,再整合上面的音乐地址就能抓到音乐信息,并且经过代码编译之后下载下来。
特别说明一下,下载歌曲的地址以及我们抓包时的URL之中,仅仅有如vkey的不同,或者是一些ID的不同,其他的参数是相同的!所以我们才能仅仅抓到vkey信息就能方便的下载歌曲,就是这么个意思。不理解的朋友可细心观察一下。
- 图1:
- 图2:
其中的URL地址:
完整代码
|
|
在使用urlretrieve函数时,其中的url参数输入时应当加上格式,如下载视频时加上.mp4,下载音乐时加上.mp3,否则会易出现HTTP 403 错误 – 禁止访问 (Forbidden)
最后
运行:
到目录查看:
一切还算是顺利。前段时间想爬取腾讯视频,研究了挺久,没有成功,还需要学习,腾讯的资源都在腾讯云上,我想方式都差不多。
后续说明
经过后来的测试,本代码爬取的思路还是正确的,但是爬取的信息流只能是同一个了…即便是不同的ID…