国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python爬取qq music中的音樂url及批量下載

2019-11-25 16:17:45
字體:
來源:轉載
供稿:網友

前言

qq music上的音樂還是不少的,有些時候想要下載好聽的音樂,但有每次在網頁下載都是煩人的登錄什么的。于是,來了個qqmusic的爬蟲。至少我覺得for循環爬蟲,最核心的應該就是找到待爬元素所在url吧。下面開始找吧(講的不對不要笑我)

實現如下

#尋找url:

  這個url可不想其他的網站那么好找。把我給累得不輕,關鍵是數據多,從那么多數據里面挑出有用的數據,最后組合為music真正的music。昨天做的時候整理的幾個中間url:

#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

#url3:http://dl.stream.qqmusic.qq.com/[filename]?vkey=[vkey](其中vkey代替該music特有的字符串)

requests(url1)

由搜索列表得到每個音樂的的songmid和mid(通過筆者觀察,這兩個值是每一個music特有的)。有了這兩個值。下面就得到了完整的url2的具體值。

requests(url2)

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

#代碼

下面來個srcs的代碼塊:

import requestsimport urllibimport jsonword = '雨蝶'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爬蟲程序思路及實現敘述完畢。

#用途:

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新龙县| 辰溪县| 中超| 玉树县| 古田县| 新昌县| 孝昌县| 安国市| 孟村| 闻喜县| 南京市| 固原市| 柳林县| 平原县| 东乡县| 榆林市| 昌吉市| 永嘉县| 穆棱市| 翼城县| 新源县| 枣阳市| 怀仁县| 金堂县| 乐平市| 涟源市| 瓦房店市| 龙山县| 新野县| 交城县| 龙南县| 阳江市| 循化| 东安县| 石棉县| 简阳市| 江山市| 横山县| 石家庄市| 平乡县| 贺州市|