Python爬虫搜索全网音乐并下载

3 篇文章 4 订阅
订阅专栏

自制一个音乐搜索引擎的思想也很直观,那就是利用第三方的接口,直接对该服务器发起请求即可,然后将获取的数据进行解析保存。这里以最近比较火的歌曲“白月光与朱砂痣”下载为例:
在这里插入图片描述
       解析的结果如上,获取的数据格式是json类型,并且除了要有歌名以外,还要有音乐平台。
源代码实现如下:

import requests
import jsonpath
import os
"""
    1.url
    2.模拟浏览器请求
    3.解析网页源代码
    4.保存数据
"""
def song_download(url,title,author):
    # 创建文件夹
    os.makedirs("music",exist_ok=True)
    path = 'music\{}.mp3'.format(title)
    print('歌曲:{0}-{1},正在下载...'.format(title,author))
    # 下载(这种读写文件的下载方式适合少量文件的下载)
    content = requests.get(url).content
    with open(file = title + author + '.mp3',mode='wb') as f:
        f.write(content)
    print('下载完毕,{0}-{1},请试听'.format(title,author))

def get_music_name():
    """
    搜索歌曲名称
    :return:
    """
    name = input("请输入歌曲名称:")
    print("1.网易云:netease\n2.QQ:qq\n3.酷狗:kugou\n4.酷我:kuwo\n5.百度:baidu\n6.喜马拉雅:ximalaya")
    platfrom = input("输入音乐平台类型:")
    print("-------------------------------------------------------")
    url = 'https://music.liuzhijin.cn/'
    headers = {
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
        # 判断请求是异步还是同步
        "x-requested-with":"XMLHttpRequest",
    }
    param = {
        "input":name,
        "filter":"name",
        "type":platfrom,
        "page": 1,
    }
    res = requests.post(url=url,data=param,headers=headers)
    json_text = res.json()

    title = jsonpath.jsonpath(json_text,'$..title')
    author = jsonpath.jsonpath(json_text,'$..author')
    url = jsonpath.jsonpath(json_text, '$..url')
    if title:
        songs = list(zip(title,author,url))
        for s in songs:
            print(s[0],s[1],s[2])
        print("-------------------------------------------------------")
        index = int(input("请输入您想下载的歌曲版本:"))
        song_download(url[index],title[index],author[index])
    else:
        print("对不起,暂无搜索结果!")

if __name__ == "__main__":
    get_music_name()

演示一下运行效果:
在这里插入图片描述
然后文件下就会出现对应的歌曲.mp3文件
在这里插入图片描述
并且每次的歌曲检索都是在PyCharm专业版的控制台中进行的,这样的用户体验就非常糟糕,所以针对以上两个问题,我对源代码进行了改进。

# 导入模块
from tkinter import *
import requests
import jsonpath
import os
from urllib.request import urlretrieve

# 2.功能实现
"""
    1.url
    2.模拟浏览器请求
    3.解析网页源代码
    4.保存数据
"""
def song_download(url,title,author):
    # 创建文件夹
    os.makedirs("music",exist_ok=True)
    path = 'music\{}.mp3'.format(title)
    text.insert(END,'歌曲:{0}-{1},正在下载...'.format(title,author))
    # 文本框滑动
    text.see(END)
    # 更新
    text.update()
    # 下载
    urlretrieve(url,path)
    text.insert(END,'下载完毕,{0}-{1},请试听'.format(title,author))
    # 文本框滑动
    text.see(END)
    # 更新
    text.update()

def get_music_name():
    """
    搜索歌曲名称
    :return:
    """
    name = entry.get()
    platfrom = var.get()
    # name = '白月光与朱砂痣'
    url = 'https://music.liuzhijin.cn/'
    headers = {
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
        # 判断请求是异步还是同步
        "x-requested-with":"XMLHttpRequest",
    }
    param = {
        "input":name,
        "filter":"name",
        "type":platfrom,
        "page": 1,
    }
    res = requests.post(url=url,data=param,headers=headers)
    json_text = res.json()

    title = jsonpath.jsonpath(json_text,'$..title')
    author = jsonpath.jsonpath(json_text,'$..author')
    url = jsonpath.jsonpath(json_text, '$..url')
    print(title,author,url)
    song_download(url[0],title[0],author[0])


# 1.用户界面
# 创建画板
root = Tk()
# 设置窗口标题
root.title('全网音乐下载器')
# 设置窗口大小以及出现的位置
root.geometry('560x450+400+200')
# 标签组件
label = Label(root,text="请输入下载的歌曲:",font=('楷体',20))
# 定位与布局
label.grid(row=0)
# 输入框组件
entry = Entry(root,font=('宋体',20))
entry.grid(row=0,column=1)
# 单选按钮
var = StringVar()
r1 = Radiobutton(root,text='网易云',variable=var,value='netease')
r1.grid(row=1,column=0)
r2 = Radiobutton(root,text='QQ',variable=var,value='qq')
r2.grid(row=1,column=1)
# 列表框
text = Listbox(root,font=('楷体',16),width=50,height=15)
text.grid(row=2,columnspan=2)
# 下载按钮
button1 = Button(root,text='开始下载',font=('楷体',15),command=get_music_name)
button1.grid(row=3,column=0)
button2 = Button(root,text='退出程序',font=('楷体',15),command=root.quit)
button2.grid(row=3,column=1)
# 显示界面
root.mainloop()

# 如何将.py代码打包成.exe文件

我们再来看看效果吧
在这里插入图片描述
这样加上了UI界面和部分代码优化之后,就可以通过.py代码打包成.exe文件发布给用户使用了。

如何用PYTHON代码写出音乐
weixin_34306446的博客
06-15 3139
如何用PYTHON代码写出音乐 什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的。我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深度学习写歌词已经实现了,之后会分享给大家),本文我们主要聊下如何写曲。 说到用代码写曲子,有一个东西大家一定要了解就是MID...
python怎么放音乐_python怎么播放音乐
weixin_39603908的博客
11-23 1294
Python播放音乐要使用pygame模块首先安装pygame模块:pip install pygame方法实现:def play_music(self):filepath = r"E:\music\消愁.mp3";pygame.mixer.init()# 加载音乐pygame.mixer.music.load(filepath)pygame.mixer.music.play(start=0.0)...
Python爬虫——下载音乐
JD20200906的博客
06-27 3705
Python爬虫50行代码实现下载音乐,源码分享、代码解析,小白也能看懂
在线音乐源码
05-06
在线音乐源码在线音乐源码在线音乐源码在线音乐源码在线音乐源码在线音乐源码在线音乐源码
音乐神器】无损音乐下载神器,2M大小,功能却很强大,重点是免费!
最新发布
Q394324546的博客
08-09 247
可以看到前面两种音质是mp3格式,对应的是标准及高质量;flac则是无损音质,如果设备支持,可以直接下载无损享受更高质的音乐。界面非常简洁,通过输入框进行歌曲搜索,左下角可以选择音质;并且提供了全选按钮及翻页按钮,支持自定义下载路径,简直封神了。今天推荐下载音乐的神器,才2M大小,就可以免费下载全网音乐,mp3格式,无损flac格式都可以下载
python自动获取网络音乐工具源代码修改版
02-23
Python是一种功能强大的编程语言,可以用于编写各种自动化工具。在网络音乐领域,我们可以利用Python编写工具来自动获取网络音乐,比如从各大音乐网站上下载音乐文件或者获取音乐信息。首先,我们可以使用Python的requests库来发送HTTP请求,访问音乐网站的页面。通过分析页面的HTML结构,我们可以找到音乐文件的URL或者音乐信息,比如歌曲名称、歌手、专辑等。接着,我们可以使用Python的urllib库或者第三方库如wget来下载音乐文件。通过提取音乐文件的URL,我们可以将音乐文件下载到本地存储,方便用户进行播放或者收藏。此外,我们还可以利用Python的第三方库如BeautifulSoup或者正则表达式来解析页面内容,提取音乐信息并保存到本地文件或数据库中。这样用户可以通过工具快速查找自己喜欢的音乐,建立自己的音乐库。另外,我们还可以结合其他工具如ffmpeg来对音乐文件进行处理,比如转换音频格式、剪辑音频等操作。这样用户可以根据自己的需求对音乐文件进行定制化处理。总的来说,利用Python编写自动获取网络音乐工具可以帮助用户快速获取音乐资源,提高用户体验和下载资效率。
Python:给你们安排一波VIP音乐,看我是如何不充会员也能下载
bagell的博客
10-19 1093
不会吧,不会吧,都21世纪了,不会还有人不会用Python来免费听歌吧!来来来,今天我们用Python试试怎样去随便下载自己想要的音乐,付费也拦不住我,
5. 超炫酷的爬虫源代码-vip音乐下载
weixin_63986098的博客
06-09 4157
它可以发送GET、POST、PUT、DELETE等请求,支持HTTPS、Cookie、Session等功能。GUI的出现使得计算机操作更加直观、易用,用户可以通过图形化的界面进行操作,而不需要记忆复杂的命令行指令。vscode打开的是【安迪笔记】文件夹,下载音乐在【安迪笔记】文件夹里的【KuWoMusic】文件夹里。它可以帮助我们处理一些不稳定的操作,比如网络请求、数据库连接等,提高程序的健壮性和可靠性。我衷心希望大家有空没空多研究下相对路径的知识,这个问题问我回答的头疼,太浪费我的时间了。
Python实现多功能音乐播放器
热门推荐
Python案例分享,B站视频教程:https://space.bilibili.com/523606542
02-15 2万+
前言 就是用Python做一个简易的音乐播放器,废话不多说,咱们直接开干 当然,今天做这个肯定不是最简单的,最简单的音乐播放器,9行代码足以 import time import pygame file = r'歌曲路径' pygame.mixer.init() print('正在播放',file) track = pygame.mixer.music.load(file) pygame.mixer.music.play() time.sleep(130) pygame.mixer.music.sto
python歌曲_python抓取并下载音乐歌曲
weixin_39776298的博客
12-11 944
import requestsimport jsonimport osclass My_Music():def __init__(self):print("*"*25+"音乐抓取器"+"*"*25)key_name = input('*请输入你要查找的歌曲名称*:')num = input('*请输入你要查看歌曲列表第几页*:')self.headers = {"User-Agent": "Moz...
90 行 Python 搭一个音乐搜索工具【附代码】
weixin_34310369的博客
02-14 128
之前一段时间读到了这篇文章,其中描述了作者如何实现国外著名音乐搜索工具shazam的基本功能。 读完之后发现其中的原理并不十分复杂,但是方法对噪音的健壮性却非常好,出于好奇决定自己用python自己实现了一个简单的音乐搜索工具—— Song Finder, 它的核心功能被封装在SFEngine 中,第三方依赖方面只使用到了 scipy。 工具demo 这个demo在ipython下展示工具的使用,...
python 爬虫批量下载音乐
06-28
提供python爬虫批量下载音乐的自动化脚本源代码供大家参考,详细注释,如有不理解的地方可以下载体验。个人原创,仅供参考。
python框架爬取音乐
08-20
使用scrapy框架爬取音乐,里面有保存歌曲信息到数据库(mongodb)的代码
Python-SDMusic多平台音乐搜索下载工具
08-10
Python3 支持的搜索下载平台:网易,QQ,酷狗,虾米,一听 支持的系统:理论上支持所有的系统,已测试系统Linux(Arch,Ubuntu,Mac
python实现音乐播放器
01-20
这是我用python的django框架写的一个模拟手机音乐播放器,访问的是网易音乐的接口
音乐下载
02-13
音乐下载器 :musical_notes: :musical_score: :trumpet: :violin: 一个简单的技巧,可以从网络下载任何音乐 搜索下载和享受! 在这里查看实际操作: 免责声明 在您所在的国家/地区下载受版权保护的材料可能是非法的。 使用风险自负。 :copyright:Sukeesh
Python爬虫 - 全网精华资源汇总.rar
03-18
这个"Python爬虫 _ 全网精华资源汇总"的压缩包很可能包含了上述各个方面的教程、代码示例、实战项目等内容,帮助你系统学习和实践Python爬虫技术。无论你是想入门爬虫,还是希望提升现有技能,这份资源都将是一个...
爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)_python爬取音乐并保存
2401_84692253的博客
05-03 261
今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本数据爬取的人会很多,所以我们需要考虑更换代理IP和随机更换请求头的方式来对音乐飙升榜进行爬取。在每次进行爬虫代码的编写之前,我们的第一步也是最重要的一步就是分析我们的网页。通过分析我们发现在爬取过程中速度比较慢,所以我们还可以通过禁用谷歌浏览器图片、JavaScript等方式提升爬虫爬取速度。
Python爬虫实战,Request+urllib模块,批量下载爬取飙歌榜所有音乐文件
Modeler_xiaoyu的博客
12-08 2031
今天给大家介绍的是Python爬取飙歌榜所有音频数据并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。
写文章

热门文章

  • AxGlyph矢量绘图软件 68171
  • 6. LaTeX 参考文献的排版与引用 67342
  • 3. LaTeX图片的排版、引用与格式 65285
  • 5. LaTeX 算法伪代码基本格式排版 35109
  • 2. LaTeX 数学公式与希腊字母 30902

分类专栏

  • 深度学习 10篇
  • linux 7篇
  • 前端设计 8篇
  • 技术笔记 5篇
  • mybatis 8篇
  • Spring Boot 6篇
  • 机器学习 5篇
  • SUDA学术之路 8篇
  • SSM框架笔记 25篇
  • Python基础与进阶 6篇
  • 网络爬虫 3篇
  • django 2篇

最新评论

  • 一文彻底读懂【极大似然估计】

    light_ink_: 确实按他的直接代没代出来

  • Python爬虫搜索全网音乐并下载

    weixin_42495538: 兄弟优化一下代码吧,搜不到了

  • 一文彻底读懂【极大似然估计】

    彰溪: 中间应该是减号

  • 6. LaTeX 参考文献的排版与引用

    无碑之墓: 怎样将参考文献这四个字居中呢?又怎么样给其添加自动编号呢?

  • 一文彻底读懂【极大似然估计】

    kafei_*: 第二部分的对似然函数求对数后,再进行求导求极值的求导公式是不是写错了?

最新文章

  • 强化学习模型研讨班
  • 远程服务器的基础操作
  • Spring Boot+Vue 前后端分离项目架构
2022年29篇
2021年60篇
2020年14篇

目录

目录

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司网站优化制作公司报价牟平seo网站优化哪家好拉萨网站搜索优化网站品牌优化去哪查询网站优化网络推广报价专业优化网站的网站文章显示不全怎么优化张家界一站式营销型网站优化安阳搜索引擎网站优化哪家便宜开封官网网站优化代办福山区网站推广排名优化莱阳营销型网站优化实惠的网站优化哪正规秀屿区网站seo优化排名优化网站方法诚信火24星到安徽网站关键词优化排名技巧网站免费优化外包白象网站优化图片做搜狗网站优化首页软件宿迁品质网站优化行业崇明区专业网站优化排名深圳有没有网站优化的网站建设优化诊疗火17星东台网站搜索优化企业枣庄网站关键词优化哪家好ps切片网站的优化浙江省网站优化推广外包佛山网站首页关键词优化推广桂林网站优化费用网站优化鉴别歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化