首页 编程教程正文

【python爬虫】分析Ajax爬取音乐接口解析网站

piaodoo 编程教程 2020-02-22 22:13:49 1123 0 python教程

本文来源吾爱破解论坛

本帖最后由 ai酸的博文 于 2019-12-4 12:54 编辑

本文仅限学习交流!

一、思路分享


1、找到该音乐接口解析网站Ajax请求接口
2、发送post请求,获取title、author、url下载链接
3、下载自己想要的音乐
4、自动弹窗打开本地默认播放器播放

二、源码

[Python] 纯文本查看 复制代码

import requests,json,os,subprocess


# 发post请求,获取5条内容(title、author、下载url)
def getContent(music_name,type):
    print('正在获取'+type+'资源...')
    url = 'http://music.ifkdy.com/'
    data = {'input': music_name,
            'filter': 'name',#kuwo   netease
            'type': type,
            'page': '1'}
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'#这个必须带 否则出错
    }
    try:
        response = requests.post(url,headers=headers,data=data)
        Html_dict = json.loads(response.content.decode())
        music1= Html_dict['data'][0]
        music2 = Html_dict['data'][1]
        music3 = Html_dict['data'][2]
        music4 = Html_dict['data'][3]
        music5 = Html_dict['data'][4]
        print(type+'资源获取成功')
        return music1, music2, music3, music4, music5
    except:
        print(type+'资源获取失败')
        return []

#选择是否下载?下载哪一个?
def select(musicTuple):
    if musicTuple==[]:
        return 0
    print('-------------------音乐目录-------------------\n0、不下载')
    num = 1
    for music in musicTuple:
        print(str(num) + '、' + music['title'] + ' ' + music['author'])
        num += 1
    choice = input('请输入数字序号:')
    if choice==0:
        return 0
    else:
        return musicTuple[int(choice)-1]

#开始下载
def download(music):
    if music==0:
        return 0
    else:
        print('-------------------开始下载-------------------')
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
        try:
            data = requests.get(music['url'], headers=headers, stream=True)
            if (not (os.path.exists('e://音乐spider'))):
                os.mkdir('e://音乐spider')
            with open('E://音乐spider//{}.mp3'.format(music['title'] + ' ' + music['author']), 'wb')as f:
                for j in data.iter_content(chunk_size=512):
                    f.write(j)
                print('下载成功:' + music['title'] + ' ' + music['author'])
            path = 'e://音乐spider//{}.mp3'.format(music['title'] + ' ' + music['author'])
            return path
        except:
            print('下载失败:'+music['title'] + ' ' + music['author'])

def run():
    music_name = input('请输入音乐名称或音乐人姓名:')
    #发post请求,获取5条内容(title、author、下载url)
    musicTuple = getContent(music_name,'netease')
    #选择是否下载?true-->下载哪一个?true--->return music  false--->return
    music = select(musicTuple)
    #开始下载
    path = download(music)
    #音乐播放
    subprocess.Popen(path,shell=True)

if __name__ == '__main__':
    run()


三、运行结果图片

QQ截图20191204123912.png (49.73 KB, 下载次数: 0)

下载附件  保存到相册

2019-12-4 12:52 上传



学.png (314.14 KB, 下载次数: 0)

下载附件  保存到相册

2019-12-4 12:52 上传




欢迎大家交流,喜欢的点个赞呀~嗨学网

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7856.html

搜索