Python爬去百度音乐

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬去百度音乐相关的知识,希望对你有一定的参考价值。

编译器环境:Python3.6


代码:

#!/usr/bin/env python
#-*-coding=utf-8 -*-
#AUTHOR:duwentao

import  requests
import re
import json

def get_sids_by_name(name):
    url = 'http://music.baidu.com/search'
    data = {
        'key':name
    }
    reponse = requests.get(url,params=data)
    reponse.encoding='utf-8'
    html = reponse.text
    #print (html)
    ul = re.findall(r'<ul.*</ul>', html, re.S)[0]
    #print(ul)
    # 获取sid sid&quot;:551560464
    sids = re.findall(r'sid&quot;:(\d+),', ul, re.S)
    return sids


def get_mp3_by_id(song_id):
    song_id = song_id

    api ='http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.song.play&format=jsonp&callback=jQuery17205500581185420972_1513324047403&songid=%s&_=1513324048127' % song_id

    response = requests.get(api)
    data = response.text

    data = re.findall(r'\((.*)\)', data)[0]
    data = json.loads(data)
    title = data['songinfo']['title']
    mp3_url = data['bitrate']['show_link']
    mp3_data = requests.get(mp3_url).content

    with open('%s.mp3' % title,'wb') as f:
        f.write(mp3_data)
        print ("下载完成")
        f.close()
sid = input("请输入歌手的名字:")
sids = get_sids_by_name(sid)

for si in sids:
    print ("正在下载sid为",si)
    get_mp3_by_id(si)



执行结果:

技术分享图片

技术分享图片


微信公众号:

技术分享图片

以上是关于Python爬去百度音乐的主要内容,如果未能解决你的问题,请参考以下文章

爬虫到百度贴吧,爬去自己的小说

爬去百度热搜榜

如何利用python爬取网易云音乐

剪辑音乐要很久?3行代码Python瞬间搞定

剪辑音乐要很久?3行代码Python瞬间搞定

简单的爬去百度贴吧小爬虫讲解