[python爬蟲]多進程爬取喜馬拉雅音樂

導包

import json,os
from piaot import *
from multiprocessing import Pool

def pqxs(shu=1):

    # 循環頁數
    for i in range(1,shu+1):

        # 需要查詢手動輸入鏈接地址
        url="http://www.ximalaya.com/revision/album/getTracksList?albumId=12642314&pageNum="+str(i)

        # 調用了自定義包(開啓代理和隱藏html頭,返回2進制)
        req=yc(url)

        # 進行轉碼
        req=req.decode('utf-8')

        # 進行json解碼
        html=json.loads(req)

        # 在返回的值裏找到需要的數據
        a=html['data']['tracks']
        q=Pool(4)
        # 進行循環遍歷
        for i in a:

            # 找到了每個小說的名稱
            v=i['title']


            # 將值裏取出後面的id編號(id爲每個音頻的連接條件)
            x=i['url'].split('/')[-1]

            # 將值裏的《》標點符號去掉
            name = v.split('》')
            name = name[0].split('《')
            name=name[1]

            # 存儲路徑
            b = 'C:/Users/黑神/Desktop/pc_zy/喜馬拉雅/' + name

            # 判斷當前路徑是否存在,沒有則創建文件夾
            if not os.path.exists(b):

                print('正在創建文件夾:路徑C:/Users/黑神/Desktop/pc_zy/'+name+'/')

                # 執行存儲
                os.makedirs(b)

                print('創建成功....')

            # 音頻鏈接地址
            url_xs = 'https://www.ximalaya.com/revision/play/tracks?trackIds='+str(x)

            # 音頻存放的路徑
            dz=b+'/'+v+'.m4a'

            print(v+'音頻下載中.............')

            try:
                # 多進程下載
                zhi = q.apply_async(yc,(url_xs,))

                # 保存到文件
                with open(dz, 'wb') as f:
                    f.write(zhi.get())

                print('(^-^)OK')

            except:

                print('( T _ T )NO')

if name == ‘main‘:
# 頁數
pqxs(1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章