【Python3爬蟲】下載酷狗音樂上的VIP付費歌曲
阿新 • • 發佈:2018-12-10
經過測試,可以下載要付費下載的歌曲(n_n)
準備工作:Python3.5+Pycharm
使用到的庫:requests,re,json
步驟:
開啟酷狗音樂的官網,輸入想要搜尋的歌曲(例如《天后》),然後回車搜尋,得到如下頁面:
右鍵檢查或者按F12開啟開發者工具,點選JS選項,查詢到如下資訊,FileName就是返回的歌手名和歌曲名資訊,我們要將其提取出來:
由於這個網址返回的不是標準的json格式,所以要先進行如下處理,然後再轉換成json格式:
res = requests.get(url).text js = json.loads(res[res.index('(') + 1:-2])
提取到歌曲資訊之後,我們輸入一個序號代表要下載的歌曲序號,然後把歌曲下載下來就好了。 執行截圖:
附上原始碼:
import requests import json import re ''' 有需要Python學習資料的小夥伴嗎?小編整理一套Python資料和PDF,感興趣者可以加學習群:548377875,反正閒著也是閒著呢,不如學點東西啦~~ ''' def get_song(x): url = "http://songsearch.kugou.com/song_search_v2?callback=jQuery112407470964083509348_1534929985284&keyword={}&" \ "page=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filte" \ "r=0&_=1534929985286".format(x) res = requests.get(url).text js = json.loads(res[res.index('(') + 1:-2]) data = js['data']['lists'] for i in range(10): print(str(i + 1) + ">>>" + str(data[i]['FileName']).replace('<em>', '').replace('</em>', '')) number = int(input("\n請輸入要下載的歌曲序號(輸入-1退出程式): ")) if number == -1: exit() else: name = str(data[number - 1]['FileName']).replace('<em>', '').replace('</em>', '') fhash = re.findall('"FileHash":"(.*?)"', res)[number - 1] hash_url = "http://www.kugou.com/yy/index.php?r=play/getdata&hash=" + fhash hash_content = requests.get(hash_url) play_url = ''.join(re.findall('"play_url":"(.*?)"', hash_content.text)) real_download_url = play_url.replace("\\", "") with open(name + ".mp3", "wb")as fp: fp.write(requests.get(real_download_url).content) print("歌曲已下載完成!") if __name__ == '__main__': x = input("請輸入歌名:") get_song(x)