【1、項目背景】html
如今的聽歌軟件動不動就是各類付費,要下載軟件才能聽,當你下載了以後,你會驚奇的發現這首歌還收費,這就讓一貫喜歡白嫖的小編感到很傷心了。因而,小編左思右想,終於讓我發現了其中的奧祕,一塊兒來看看吧。瀏覽器
【2、項目準備】cookie
一、編輯器:Sublime Text 3網絡
二、軟件:360瀏覽器cors
【3、項目目標】編輯器
下載咱們喜歡的音樂。學習
【4、項目實現】fetch
一、打開酷狗音樂官網網站
360瀏覽器打開酷狗音樂官網:url
能夠看到十分清爽的畫風,這也是我比較喜歡的地方。
二、審查元素,分析請求
打開Network ,分析請求,咱們能夠看到:
從上圖能夠看出,這是請求的參數,因此咱們可使用Requests模塊對它發起請求。
三、模擬發起請求
咱們從網頁中得知它的地址爲:
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)
這樣就實現了模擬請求,咱們來驗證下:
能夠看出它成功打印出了和咱們上面如出一轍的地址。
四、獲取音樂文件列表
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音樂難度高點。不過咱們今天要下載的是音頻文件,因此暫時跳過,無論它。
五、下載音頻文件
咱們在搜索後彈出來的列表中選擇原唱曲目,進去聽一下:
我選擇第一首,打開是這樣,咱們開始騷操做,打開Network:
咱們輸入後綴Mp3,而後定位到對應的請求,而後打開它的請求結果,能夠看到一個Json結果:
咱們將Json結果粘貼到控制檯,能夠看到裏面有一段關於Mp3的結果,不過添加了點干擾符號,咱們把它提取出來:
這樣咱們就能夠把酷狗音樂的歌曲下載下來了。
【5、項目總結】
一、其實,酷狗音樂與QQ音樂不一樣,酷狗音樂的下載連接更好捕獲,你能夠直接在它的播放界面捕獲到:
模擬請求這個界面,一切都搞定了。
二、關於QQ音樂的獲取,能夠參考以前發佈的系列文章:
三、須要本文源碼的小夥伴,後臺回覆「酷狗音樂」四個字,便可獲取。
想學習更多Python網絡爬蟲與數據挖掘知識,可前往專業網站:http://pdcfighting.com/