爬取QQ音樂(講解爬蟲思路)


一、問題描述:

本次爬取的對象是QQmusic,為自己后面做django音樂網站的開發獲取一些資源。

 

二、問題分析:

由於QQmusic和網易音樂的方式差不多,都是講歌曲信息放入到播放界面播放,在其他界面沒有media的資源,喜馬拉雅的則不是這樣的,可以參考我爬取喜馬拉雅的blog與代碼:https://www.cnblogs.com/future-dream/p/10347354.html

1.由於上述原因,我們需要對網頁進行分析:

獲取歌曲菜單的id——>歌曲的所有id信息——>播放網站URL的構建,我們所有的一切都是為播放網站參數需要而努力,得到了對應的參數剩下的就很簡單。

(1)歌曲菜單界面

 

(2)歌曲id信息

 

(3)播放網站的解析

 

三、實施步驟:

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

1.播放界面的請求參數

(1)一個播放界面

 

(2)另一個播放界面

通過觀察我們可以看到,只有vkey參數不一樣,而我們的目的也是得到這個vkey參數,這樣可以完成對歌曲內容的獲取。

 

2.查看vkey所在的文件

(1)由於我們是在播放界面點出來的因此需要回到播放界面去查找信息,可以通過對id進行查詢,可以看到如圖灰色的響應,包含了所有關於歌曲信息的url信息。

 

(2)查看參數可以知道我們需要的參數,注意:第一個參數是可有可無的,因此就省去這個參數。

 

(3)對比參數,查看變量參數,可以看到只有songmid不一樣因此在解析的時候只需要songmid需要改變。

 

3.獲取songmid

(1)我們根據響應可以知道我們是通過歌單的信息獲取歌曲的列表,在通過歌曲的列表獲取歌曲的songmid。

 

(2)通過獲取的song_list獲取到songmid

 

(3)查看請求頭的信息,觀察變化的參數

1.一個請求頭的信息

 

2.另一個請求頭的信息

通過請求頭都分析我們只需要改變disstid的參數就可以獲取到所有的歌曲信息。

 

4.獲取disstid的信息

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

 

(2)查看請求頭,其中rnd的信息可以不要為空就可以了。

 

(3)獲取disstid

 通過倒推的方法,可以成功解析歌曲的信息,剩下的就是代碼實現。

 

四、成果展示與總結:

1.展示

2.總結

一步步分析,在解析vkey的時候第一個很奇怪的參數就可以省略,在進行爬蟲爬取的時候也要注意這些問題,有時候的參數是可以省略的,因此在構造請求信息的時候就可以省略

參數的信息,由於QQmusic采取的都是json格式的文件,所以在解析的時候比較簡單,也很快速,這也是結構化數據的信息的特點。

 

五、源碼:

https://github.com/pzq7025/Spider


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM