第一步:打開QQ音樂網頁版,在搜索框中隨性搜索一波,獲得一個搜索列表正則表達式
第二步:F12 F5 打開開發者工具json
發現了一大坨各式各樣的文件 我的認爲要實現搜索功能必須先找到搜索列表中包含9首歌詳細信息的文件所對應的URLless
而後就慢慢找啊找啊找啊 而後發現工具
有個list中存儲了每首歌的如下基本信息!!!測試
對應的是這一個文件 而後咱們到headers部分找到他的URLorm
又臭又長的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格式轉換爲列表格式的操做
最後 咱們經過循環輸出列表中咱們所需的信息(歌曲名 歌手名 專輯名 歌曲時長。。。(想要啥要啥))
寫在最後:搜索功能的代碼已經實現 下載功能的思路其實能夠說是和搜索功能的如出一轍 注意細節很快就能實現了