簡單爬蟲下載QQ音樂

環(huán)境:python3.6
需要用到的庫:requests么库;json;os;multiprocessing
通過使用開發(fā)者工具進(jìn)行比較查看確定需要用到的三個(gè)URL

u3 = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=63514736641951294&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%88%98%E5%BE%B7%E5%8D%8E&g_tk=5381&jsonpCallback=searchCallbacksong1651&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0"#取得media_mid

w字段為我們搜索的關(guān)鍵字

u2 = "https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback3987557968181119&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback3987557968181119&uin=0&songmid=002Q4Jgw0dxWxt&filename=C400002Q4Jgw0dxWxt.m4a&guid=5939185138"#返回songmid和vkey

需要取得u2需要有songmid和filename

u1 = "dl.stream.qqmusic.qq.com/C400002Q4Jgw0dxWxt.m4a?vkey=2B7DD0E2584277EE4C9839F48E3F92F573E443960895BCF8CB107114E2753A49FDE61425996E1F984CD7C4970738AA3A878B1CF0D14501D0&guid=5939185138&uin=0&fromtag=66"#通過filename和vkey=確定歌曲鏈接

具體代碼為:
"""
import requests
import random
import re
import json
import os
import multiprocessing

class DownLoadMusic(object):

def __init__(self, singer_name):
    self.singer_name = singer_name

def make_directory(self):
    folder_path ='F:\\test_auto\\spider\\music\\%s' % self.singer_name
    os.makedirs(folder_path)
    return folder_path

def get_mid_by_name(self):#通過歌手名字取得mid
    name = self.singer_name
    url="https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=63514736641951294&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%s&jsonpCallback=searchCallbacksong1651&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0"%name
    response = requests.get(url)
    result_ = response.content
    result = result_.decode('utf-8')
    list_ = re.findall(r'\{(.*)\}', result, re.S)[0]
    result = re.findall(r'\{.*\}', list_, re.S)[0]
    #"file":{"media_mid":"002Q4Jgw0dxWxt","size_128":4177629,"size_320":10418855,"size_aac":6075090,"size_ape":25501357,"size_dts":0,"size_flac":26906455,"size_ogg":5951775,"size_try":0,"strMediaMid":"002Q4Jgw0dxWxt","try_begin":0,"try_end":0}
    result1 = re.findall(r'\"file.*?\}', result, re.S)
    mids = []
    for i in result1:
        mm = re.findall(r'\{.*\}', i, re.S)[0]
        x = json.loads(mm)
        mids.append(x['strMediaMid'])
    return mids

def get_music_by_mid(self, mid_):
    try:
        folder_path = self.make_directory()
    except:
        folder_path ='F:\\test_auto\\spider\\music\\%s' % self.singer_name
    filename = u'C400'+mid_+u'.m4a'
    url = "https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback3987557968181119&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback3987557968181119&uin=0&songmid=%s&filename=%s&guid=5939185138"%(mid_, filename)
    response = requests.get(url)
    result_ = response.content
    result = result_.decode('utf-8')
    x = re.findall(r'\[.*?\]', result, re.S)[0]
    y = re.findall(r'\{.*?\}', x, re.S)[0]#正則表達(dá)式取得報(bào)文
    z = json.loads(y)#轉(zhuǎn)化成字典
    vkey = z['vkey']
    uz = "http://dl.stream.qqmusic.qq.com/%s?vkey=%s&guid=5939185138&uin=0&fromtag=66" % (filename, vkey)
    try:
        response = requests.get(uz)
        result = response.content
    except:
        print("地址或者網(wǎng)絡(luò)有點(diǎn)問題...")
    else:
        name = str(random.randint(1000, 9999))+'.m4a'
        file_path = folder_path + '\\' + name
        print("正在下載歌曲%s" % name)
        with open(file_path, 'wb') as f:
            f.write(result)

'''
‘’‘’
def main():
singer_name = input('請(qǐng)輸入歌手名稱:')
download = DownLoadMusic(singer_name)#多進(jìn)程下載英語
mids = download.get_mid_by_name()
p = multiprocessing.Pool(4)
p.map(download.get_music_by_mid, mids)
p.close()
p.join()

if name == 'main':
main()
'''

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市中贝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌臼朗,老刑警劉巖邻寿,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異视哑,居然都是意外死亡绣否,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門挡毅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枝秤,“玉大人,你說我怎么就攤上這事慷嗜〉淼” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵庆械,是天一觀的道長薇溃。 經(jīng)常有香客問我,道長缭乘,這世上最難降的妖魔是什么沐序? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上策幼,老公的妹妹穿的比我還像新娘邑时。我一直安慰自己,他們只是感情好特姐,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布晶丘。 她就那樣靜靜地躺著,像睡著了一般唐含。 火紅的嫁衣襯著肌膚如雪浅浮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天捷枯,我揣著相機(jī)與錄音滚秩,去河邊找鬼。 笑死淮捆,一個(gè)胖子當(dāng)著我的面吹牛郁油,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播攀痊,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼桐腌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚕苇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤凿叠,失蹤者是張志新(化名)和其女友劉穎涩笤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盒件,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹬碧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炒刁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恩沽。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翔始,靈堂內(nèi)的尸體忽然破棺而出罗心,到底是詐尸還是另有隱情,我是刑警寧澤城瞎,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布渤闷,位于F島的核電站,受9級(jí)特大地震影響脖镀,放射性物質(zhì)發(fā)生泄漏飒箭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弦蹂。 院中可真熱鬧肩碟,春花似錦、人聲如沸凸椿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽削饵。三九已至岩瘦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窿撬,已是汗流浹背启昧。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劈伴,地道東北人密末。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像跛璧,于是被迫代替她去往敵國和親严里。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 腦海一直有個(gè)想法追城,想做一個(gè)音樂播放的小程序刹碾。奈何還只停留在腦海之中。音樂的數(shù)據(jù)的來源是個(gè)需要考慮的問題座柱。之前用No...
    Evtion閱讀 6,048評(píng)論 2 6
  • 利用perl語言抓取腳本的時(shí)候色洞,我是拒絕的戏锹。因?yàn)橛胮erl語言太繁瑣』鹬睿空閑時(shí)間在聽音樂锦针,突然發(fā)現(xiàn)有些歌沒辦法聽,就...
    自閉癥小孩閱讀 547評(píng)論 0 1
  • 1置蜀、任務(wù)目標(biāo)①爬五月天正規(guī)專輯的所有歌曲的歌詞②按照年份進(jìn)行情感分析奈搜,并制作詞云2、方法在qq音樂上用Python...
    FancyFanyc閱讀 9,219評(píng)論 0 5
  • 基于thinkphp的代碼 1:搜索歌曲 接口: $url="http://soso.music.qq.com/f...
    暖暖的走閱讀 1,018評(píng)論 0 0
  • 姓名:莫夏連 日期:2018年7月3日 名稱:寧波三維電子 六項(xiàng)精進(jìn)403期努力三組學(xué)員 【日精進(jìn)打卡第23天】 ...
    莫夏連閱讀 73評(píng)論 0 0