首頁 > 後端開發 > Python教學 > Python爬取qq music中的音樂url及大量下載的方法

Python爬取qq music中的音樂url及大量下載的方法

高洛峰
發布: 2017-03-24 16:23:45
原創
2386 人瀏覽過

這篇文章主要為大家介紹了利用Python爬取qq music中的音樂url及實現大量下載的相關資料,文中給了詳細的介紹和範例程式碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

前言

qq music上的音樂還是不少的,有些時候想要下載好聽的音樂,但有每次在網頁下載都是煩人的登入什麼的。於是,來了qqmusic的爬蟲。

實作如下

#尋找url:  這個url可不想其他的網站那麼好找。把我給累得不輕,關鍵是數據多,從那麼多數據裡面挑出有用的數據,最後組合為music真正的music。 url1:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w=雨蝶

#url2:https://c.y.qq.com/base /fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&[songmid]&C400+songmid+.m4a&guid=6612300644#mus. ?vkey=[vkey](其中vkey取代該music特有的字串

#requests(url1)

##由搜尋列表得到每個音樂的的songmid和mid(透過筆者觀察,這兩個值是每一個music特有的)。

#requests(url2)

得到搜尋結果中每個music的vkey值,經過筆者觀察,filename即為C400songmid.m4a。而url3即為音樂的真實url,由於筆者對此url的其他參數研究的不夠透徹,因此每次最多返回20首music的url,有了url,那Tencent的music就可以盡情的享受了。

#程式碼

下面來個srcs的程式碼區塊:

import requests
import urllib
import json
word = '雨蝶'
res1 = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w='+word)
jm1 = json.loads(res1.text.strip('callback()[]'))
jm1 = jm1['data']['song']['list']
mids = []
songmids = []
srcs = []
songnames = []
singers = []
for j in jm1:
 try:
  mids.append(j['media_mid'])
  songmids.append(j['songmid'])
  songnames.append(j['songname'])
  singers.append(j['singer'][0]['name'])
 except:
  print('wrong')


for n in range(0,len(mids)):
 res2 = requests.get('https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid='+songmids[n]+'&filename=C400'+mids[n]+'.m4a&guid=6612300644')
 jm2 = json.loads(res2.text)
 vkey = jm2['data']['items'][0]['vkey']
 srcs.append('http://dl.stream.qqmusic.qq.com/C400'+mids[n]+'.m4a?vkey='+vkey+'&guid=6612300644&uin=0&fromtag=66')
登入後複製

#下載:

有了srcs,下載自然不成問題。當然取得歌手以及歌名也是可以把src複製到瀏覽器下載。也可以用大Python批量下載,無非就是一個循環,跟我們前面下載sogou

圖片

方法類似:(筆者py版本:python3.3.3)

print('For '+word+' Start download...') 
x = len(srcs)
for m in range(0,x):
 print(str(m)+'***** '+songnames[m]+' - '+singers[m]+'.m4a *****'+' Downloading...')
 try:
  urllib.request.urlretrieve(srcs[m],'d:/music/'+songnames[m]+' - '+singers[m]+'.m4a')
 except:
  x = x - 1
  print('Download wrong~')
print('For ['+word+'] Download complete '+str(x)+'files !')
登入後複製

以上兩段程式碼,寫在同一py文件,執行即可下載對應關鍵字的music

#運行效果:

 

下載開始,以下...到下載目錄看看:


music已經成功下載。 。 。

至此,關於qqmusic的url爬蟲程式思路及實現敘述完畢。

#用途:Python爬取qq music中的音乐url及批量下载的方法

musicplayer做好殼子的同學,應該用得上。其實做這個初衷是要為我的基於html的musicplayer服務的。但現在卡在了js調用py的環節,我再找找吧,明白的同學望告知,萬分感謝!

以上是Python爬取qq music中的音樂url及大量下載的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板