【實戰】下載歌曲只能開綠鑽?NoNoNo, Python爬蟲,無所不能。
阿新 • • 發佈:2018-10-31
引言
給大家帶來絕對福利,之前在某Q音樂上聽歌,如果想要下載某首歌曲,總是提示小編開通綠鑽,作為一個爬蟲愛好者,怎麼可能花這冤枉錢呢?所以,辦法總是人想的,具體過程就不多說了,最終結果就是通過100行程式碼,可以下載只有綠鑽才能下載的歌曲哦~
原始碼
連結:https://pan.baidu.com/s/1Ti-ybrquCf3X7qGPcdAEQA 密碼:d2zr
責任宣告
本程式碼只用於學習交流,嚴謹用於其他用途。所造成的責任影響不歸本人負責。
實現功能
通過指定歌曲名稱,可以將搜尋結果第一頁中的歌曲下載完成。
部分原始碼
def parse_17(song_name): base_url = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp" r = requests.get(base_url,params=parames,headers=headers) return_data = r.text pattern_17 = re.compile('\\((.*)?\\)') return_data_json = eval(pattern_17.search(return_data)[0].replace("null","None")) data = return_data_json["data"]["song"]["list"] for n,d in enumerate(data): songmid = (d['songmid']) strMediaMid = (d['strMediaMid']) parse_17_2 (songmid,strMediaMid,n+1,song_name)
def parse_17_2(songmid,strMediaMid,n,song_name): base_url2 = "https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg" r = requests.get(base_url2,params=params_2,headers=headers) return_data = r.text pattern_17 = re.compile('\\((.*)?\\)') return_data_json = eval(pattern_17.search(return_data)[0].replace("null","None")) data = return_data_json["data"]["items"][0] filename = data['filename'] vkey = data['vkey'] parse_17_3(filename,vkey,n,song_name)
def parse_17_3(filename,vkey,n,song_name):
url = "http://dl.stream.qqmusic.qq.com/"
url = url + filename
params = {
'vkey': vkey ,
'guid': '8208467632' ,
'uin':'0' ,
'fromtag':'66'
}
r = requests.get(url,params=params,headers=headers)
filename = song_name + str(n) + ".m4a"
with open(filename,"wb") as f :
f.write(r.content)
print("第%s首歌曲下載完成"%n)