只需幾分鐘!用python爬取付費歌曲!

文 | ssw
來源:Python 技術(shù)「ID: pythonall」

有小伙伴說怎么爬取付費的音頻

這里分享一個腳本或者說思路,免費下載VIP歌曲。
本人喜歡韓國TARA組合的“l(fā)ovey dovey”,少女時代的“Gee”,張韶涵的“歐若拉”。
這幾首在酷我、酷狗、QQ音樂都只能播放60秒試聽片段,就算充了會員,也只有在會員期限內(nèi)可以聽。
所以呢,今天就利用爬蟲來免費下載想聽的付費音樂。
文章較短,建議看完全文,下載鏈接怎么找到的,沒人跟你說估計難找到。
開始我也摸不著頭腦,尋找過程應(yīng)證了一句話“魔鬼藏在細(xì)節(jié)中”。
這是用腳本下載的付費歌曲:

順便說一句,
代碼中tkinter這種GUI模塊操作起來繁瑣,一段小功能需要一長串的代碼,很像面向過程,所以我基本不碰它??
不廢話
從URL開始
search_url = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?'
腳本里的這個地址怎么來的呢?其實就是網(wǎng)頁上的搜索框。
打開酷我官網(wǎng),輸入“Lovey Dovey”并回車,出現(xiàn)url

它包括請求參數(shù)key,httpsStatus等。
腳本里對url發(fā)起請求,并在tkinter中顯示搜索結(jié)果,就是這一段

輸出的歌曲信息,如下圖所示

驗證歌曲信息
加一行打印item_text,然后左鍵點擊tkinter中的歌曲信息,我們在pycharm的輸出中可以直觀的看到相關(guān)的歌曲內(nèi)容

魔鬼藏在細(xì)節(jié)中之“繞過下載按鈕”
有了歌曲信息,下一步是獲取歌曲的下載鏈接。這個鏈接又藏在哪個旮旯里?

如果直接選擇“下載歌曲”,會彈框讓你下載客戶端

這個時候重點來了,點擊第一首歌的播放按鈕

會提示“該歌曲為付費歌曲”,播放不了,同時下方未出現(xiàn)網(wǎng)絡(luò)請求:

那么我們換一首免費的,點擊第三首的播放按鈕。免費的歌曲能播放,并且會自動添加到播放列表中:

然后刷新網(wǎng)頁,下載鏈接出現(xiàn)了,并且能看到響應(yīng)數(shù)據(jù)中有個mp3結(jié)尾的鏈接,就是它了!

這個下載鏈接就是播放列表中,最新播放的歌曲!
前面已經(jīng)拿到了所有歌曲的信息,包括付費歌曲,按下載鏈接的格式去發(fā)送請求,寫入文件就可以了
music_url = 'http://www.kuwo.cn/api/v1/www/music/playUrl?mid={}&type=convert_url3' \
'&httpsStatus=1&reqId={}' \
.format(song_rid, songs_req_id)

我們測試一下,腳本下載好的少女時代“Gee”用QQ音樂打開,彈框說“歌曲需付費”

看來這首歌是真的VIP會員歌曲。
本文是由 Python技術(shù) 公眾號粉絲 ssw 投稿,歡迎大家繼續(xù)踴躍投稿!
點擊關(guān)注公眾號,閱讀更多精彩內(nèi)容

