一篇文章教會你使用Python網路爬蟲下載酷狗音樂

Python_sn發表於2020-10-12

【一、專案背景】

現在的聽歌軟體動不動就是各種付費,要下載軟體才能聽,當你下載了之後,你會驚奇的發現這首歌還收費,這就讓一向喜歡白嫖的小編感到很傷心了。於是,小編冥思苦想,終於讓我發現了其中的奧祕,一起來看看吧。

【二、專案準備】

1、編輯器:Sublime Text 3

2、軟體:360瀏覽器

【三、專案目標】

下載我們喜歡的音樂。

【四、專案實現】

1、開啟酷狗音樂官網

360瀏覽器開啟酷狗音樂官網:

可以看到十分清爽的畫風,這也是我比較喜歡的地方。

2、審查元素,分析請求

開啟Network ,分析請求,我們可以看到:

從上圖可以看出,這是請求的引數,所以我們可以使用Requests模組對它發起請求。

3、模擬發起請求

我們從網頁中得知它的地址為:

https://www.kugou.com/yy/html/search.html#searchType=song&searchKeyWord=%E4%B8%8D%E8%B0%93%E4%BE%A0

可以看到真正對於我們來說有用的就只有SearchKeyWord引數後的值,前面的搜尋型別預設填寫即可,所以我們可以這樣:

import requests
headers={
'accept': '*/*',
'accept-encoding':'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'cookie': 'kg_mid=ebb2de813317a791bcf7b7d3131880c4; UM_distinctid=1722ba8b22632d-07ac0227c507a7-4e4c0f20-1fa400-1722ba8b2284a1; kg_dfid=0Q0BEI47P4zf0mHYzV0SYbou; kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1590041687,1590280210,1590367138,1590367386; Hm_lpvt_aedee6983d4cfc62f509129360d6bb3d=1590367431',
'referer': 'https://www.kugou.com/yy/html/search.html',
'sec-fetch-mode': 'no-cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
aa=input('請輸入歌名:')
data={
'callback': 'jQuery112408716317197794392_1590368232677',
'keyword':aa,
'page': '1',
'pagesize':'30',
'userid':'-1',
'clientver': '',
'platform': 'WebFilter',
'tag': 'em',
'filter': '2',
'iscorrection': '1',
'privilege_filter': '0',
'_': '1590368232679',
}
requests.get('https://www.kugou.com/yy/html/search.html',params=data,timeout=4)

這樣就實現了模擬請求,我們來驗證下:

可以看出它成功列印出了和我們上面一模一樣的地址。

4、獲取音樂檔案列表

rep=requests.get('https://www.kugou.com/yy/html/search.html',params=data,timeout=5)
print(rep.url)
res=requests.get(rep.url,timeout=4)
print(res.text)

當我們將請求地址填寫正確後,我發現竟然內容與預期不相符,但是請求地址對的一批。

我以為是這樣的結果:

實際上的結果:

可以看到差距很大,而且用Json也根本獲取不到,報格式錯誤,說明不是一個Json,看來這比QQ音樂難度高點。不過我們今天要下載的是音訊檔案,所以暫時跳過,不管它。

5、下載音訊檔案

我們在搜尋後彈出來的列表中選擇原唱曲目,進去聽一下:

我選擇第一首,開啟是這樣,我們開始騷操作,開啟Network:

我們輸入字尾Mp3,然後定位到對應的請求,然後開啟它的請求結果,可以看到一個Json結果:

我們將Json結果貼上到控制檯,可以看到裡面有一段關於Mp3的結果,不過新增了點干擾符號,我們把它提取出來:

這樣我們就可以把酷狗音樂的歌曲下載下來了。

【五、專案總結】

1、其實,酷狗音樂與QQ音樂不同,酷狗音樂的下載連結更好捕獲,你可以直接在它的播放介面捕獲到:

模擬請求這個介面,一切都搞定了。

2、關於QQ音樂的獲取,可以參考之前釋出的系列文章:

3、需要本文原始碼的小夥伴,後臺回覆“酷狗音樂”四個字,即可獲取。 想學習更多Python網路爬蟲與資料探勘知識,可前往專業網站:http://pdcfighting.com/

相關文章