百度音乐爬虫

# -*- coding:utf-8 -*-
import requests
import re
import json
import os
#通过id下载歌曲
def get_mp3(sid,name):
    api = 'http://musicapi.qianqian.com/v1/restserver/ting?method=baidu.ting.song.play&format=jsonp&callback=jQuery17206882464381570916_1530080289497&songid=%s&_=1530080292670'%sid
    response = requests.get(api)
    data = response.text
    data = re.findall(r'\((.*)\)',data)[0]
    data = json.loads(data)
    try:  # 可能会出现异常的一段代码
        url = data['bitrate']['file_link']
        filename = data['songinfo']['title']+'.mp3'
        asd=re.split(r'"|\?',filename)

        if len(asd) == 3:
            filename=asd[0]+'_'+asd[1]+"_"+asd[2]+'.mp3'
        elif len(asd) == 2:
            filename=asd[0]+asd[1]
        print(filename)

        ##下载
        #发送http请求
        response = requests.get(url)
        #写出mp3
        with open("%s\\"%name+filename,'wb') as f:
            f.write(response.content)
    except:
        return
#确定页数获取sid
def get_name_num(name):
    q=[]
    api = 'http://music.taihe.com/search/song?s=1&key=%s&jump=20&start=20&size=20&third_type=0'% name
    response = requests.get(api)
    data = response.text
    data = re.findall(r'">(\d+)</a>',data)
    num = data.pop()
    for i in range(int(num)):
        url = 'http://music.taihe.com/search/song?s=1&key=%s&start=%s&size=20&third_type=0'%(name,i*20)
        response = requests.get(url)
        data = response.text
        data = re.findall(r'oid&quot;:(\d+),', data)
        q.extend(data)
    return q
name = input("输入:")
os.mkdir(name)
sid = []
sid = get_name_num(name)
for i in sid:
    get_mp3(i,name)

猜你喜欢

转载自blog.csdn.net/m0_37416991/article/details/81185041