初步大致思路:個人認為下載器中需要用到爬蟲爬取資料的部分是 “搜尋” 和 “下載” 這兩個環節
一.讓我們先來說說“搜尋”環節
第一步:開啟QQ音樂網頁版,在搜尋框中隨性搜尋一波,得到一個搜尋列表
第二步:F12 F5 開啟開發者工具
發現了一大坨各式各樣的檔案 個人認為要實現搜尋功能必須先找到搜尋列表中包含9首歌詳細資訊的檔案所對應的URL
然後就慢慢找啊找啊找啊 然後發現
有個list中儲存了每首歌的以下基本資訊!!!
對應的是這一個檔案 然後我們到headers部分找到他的URL
又臭又長的URL(一言難盡...)
但其實,我們可以稍微用點小技巧解析一下這串URL
小技巧1:把引數n的值改變一下(n=10意味著只會返回10首歌的資訊)我們把n賦一個很大的值 這樣 我們可以得到儘可能多的歌曲資訊 是我們的搜尋功能更加好
小技巧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格式轉換為列表格式的操作
最後 我們通過迴圈輸出列表中我們所需的資訊(歌曲名 歌手名 專輯名 歌曲時長。。。(想要啥要啥))
寫在最後:搜尋功能的程式碼已經實現 下載功能的思路其實可以說是和搜尋功能的一模一樣 注意細節很快就能實現了