QQ音樂搜索功能基本思路

初步大體思路:我的認爲下載器中須要用到爬蟲爬取數據的部分是 「搜索」 和 「下載」 這兩個環節

一.讓咱們先來講說「搜索」環節

第一步:打開QQ音樂網頁版,在搜索框中隨性搜索一波,獲得一個搜索列表正則表達式

第二步:F12 F5 打開開發者工具json

發現了一大坨各式各樣的文件 我的認爲要實現搜索功能必須先找到搜索列表中包含9首歌詳細信息的文件所對應的URLless

而後就慢慢找啊找啊找啊 而後發現工具

有個list中存儲了每首歌的如下基本信息!!!測試

對應的是這一個文件 而後咱們到headers部分找到他的URLorm

c.y.qq.com/soso/fcgi-b…utf-8

又臭又長的URL(一言難盡...)ssl

但其實,咱們能夠稍微用點小技巧解析一下這串URL開發

小技巧1:把參數n的值改變一下(n=10意味着只會返回10首歌的信息)咱們把n賦一個很大的值 這樣 咱們能夠獲得儘量多的歌曲信息 是咱們的搜索功能更加好rem

小技巧2:精簡URL一個參數一個參數的刪除,沒有的參數刪除後,經測試,打開的內容是不變的

小技巧3:URL實際上是使用了 & 隔開每一個參數 因此咱們以 & 爲界隔開各個參數就可讓URL更加易讀易懂

到目前爲止,咱們算是找到了一個搜索列表的URL,可是若是要達到「搜索功能」,就確定會獲取無數個搜索列表,

他們的URL一個個去找明顯不可取

因此此時我聯想(腦洞而已)到:咱們是否能夠找到URL中的 變量 與 不變量 而後不變量用一種匹配模式去匹配

因而乎咱們就獲得:由 不變量 和 關於變量的匹配模式組成的一個 「通用的URL」

當咱們輸入關鍵詞時,經過與這個「通用的URL」匹配即可獲得對應的搜索列表

下面我將經過搜索不一樣的關鍵詞 去尋找URL中的 不變量 與 變量(此處省略步驟的展現)

比較以後,我發現了不一樣的參數是: w

w=%E8%96%9B%E4%B9%8B%E8%B0%A6&g_tk=1315617814(「薛之謙」)

w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=1321333438(「周杰倫」)

這裏我是經過正則表達式去匹配的

匹配後就是常規的 讀取URL---》獲得返回體--》解析返回體中的數據

分析數據的時候涉及了一個:json格式轉換爲列表格式的操做

最後 咱們經過循環輸出列表中咱們所需的信息(歌曲名 歌手名 專輯名 歌曲時長。。。(想要啥要啥))

寫在最後:搜索功能的代碼已經實現 下載功能的思路其實能夠說是和搜索功能的如出一轍 注意細節很快就能實現了

相關文章
相關標籤/搜索