继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python 爬取QQ音乐

慕用4979188
关注TA
已关注
手记 266
粉丝 63
获赞 531

import requests

import json

import os

import threading

#发送请求获取信息

def get_response(url):

    headers = {

        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

    }

    response = requests.get(url=url, headers=headers).content

    return response


#保存文件

def save_mp3(music_name,res,word):

    filePath = os.path.join(os.getcwd(), './mp3/' + word)

    if not os.path.exists(filePath):

        print('路径不存在')

        os.makedirs(filePath)

        print('创建成功')

        with open('./mp3/' + word + "/" + music_name + ".m4a", "wb") as file:

            file.write(res)

    else:

        with open('./mp3/' + word + "/" + music_name + ".m4a", "wb") as file:

            file.write(res)


#发送请求

def send_request():

    word = 'exodus'

    res1 = requests.get(

        'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w=' + word)

    jm1 = json.loads(res1.text.strip('callback()[]'))

    list_url = []

    re = jm1['data']['song']['list']

    for j in re:

        try:

            list_url.append((j['songmid'], j['songname'].replace('/',''), j['singer'][0]['name']))

        except:

            print('wrong')

    for i in list_url:

        print("开始下载 %s" %i[1])

        res = get_response("http://ws.stream.qqmusic.qq.com/C100"+i[0]+".m4a?fromtag=0")

        #save_mp3(i[1],res,word)

        thr = threading.Thread(target=save_mp3, args=(i[1],res,word))

        # 启动线程

        thr.start()

        print("下载完成")

    print("done")

send_request()

找到QQ音乐的搜索歌曲API

https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w= + keyword

此接口获取搜索的歌曲

http://ws.stream.qqmusic.qq.com/C100"+songid+".m4a?fromtag=0

获取播放接口,通过模拟浏览器打开音乐来下载音乐

使用get_response()来下载

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP