[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)

猜你喜欢

转载自blog.csdn.net/Black_God1/article/details/81880485