1. 程式人生 > >【Python3爬蟲】下載酷狗音樂上的VIP付費歌曲

【Python3爬蟲】下載酷狗音樂上的VIP付費歌曲

經過測試,可以下載要付費下載的歌曲(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)