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

3 篇文章 3 订阅
订阅专栏

自制一个音乐搜索引擎的思想也很直观,那就是利用第三方的接口,直接对该服务器发起请求即可,然后将获取的数据进行解析保存。这里以最近比较火的歌曲“白月光与朱砂痣”下载为例:
在这里插入图片描述
       解析的结果如上,获取的数据格式是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文件发布给用户使用了。

ximalayadownloader:一键下载喜马拉雅免费音频,支持单个音频和专辑全部音频下载
05-04
Ximalaya Downloader 一键下载喜马拉雅免费音频,支持单个音频和专辑全部音频下载 安装 下载插件安装包-ximalayadownloader.zip并解压 打开chrome扩展程序 打开chrome开发者模式 点击【加载已解压的扩展程序】选择解压后的文件夹即可安装到chrome浏览器的扩展程序内 使用 下载单个音频 打开音频地址: 点击ximalayadownloader插件 点击【点我识别单个音频】,可以选择点击下载32kps或64kps的音频文件 下载专辑内所有音频 打开专辑地址: 点击ximalayadownloader插件 点击右下方箭头切换到【识别专辑】Tab 点击【点我识别专辑音频】 可以选择点击下载整张专辑音频,也可以单个音频文件下载 赞赏
使用python实现下载我们想听的歌曲,速度超快
09-16
主要介绍了使用python实现下载我们想听的歌曲,速度超快,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Python:给你们安排一波VIP音乐,看我是如何不充会员也能下载
bagell的博客
10-19 805
不会吧,不会吧,都21世纪了,不会还有人不会用Python来免费听歌吧!来来来,今天我们用Python试试怎样去随便下载自己想要的音乐,付费也拦不住我,
Python实现爬虫程序,付费歌曲一样可以免费下载~,腾讯Python开发面试经验
最新发布
m0_61418142的博客
03-22 705
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
Python爬虫之爬取酷狗音乐
qq_55306187的博客
03-21 2084
Python爬虫之爬取酷狗音乐 废话不说,上代码: #!Python # -*- encoding: utf-8 -*- ''' 1.文件名称 : 酷我音乐爬虫.py 2.创建时间 : 2021/03/21 17:29:09 3.作者名称 : ZAY 4.Python版本 : 3.7.0 ''' import os import getpass import requests from urllib.parse import quote class Spider(): def __init__
python简单程序爬取酷我音乐歌曲信息
ZMC2822846684的博客
08-25 2794
程序自动过滤掉《歌手(artist)》部分字符串长度大于6字节的数据,使后期的表格更美观。在酷我音乐中按12打开点击network,Ctrl+R刷新一下随便打开一个文件查看。header部分得自己加上去。
Python爬虫小白入门经典之爬取网上音乐
热门推荐
zhulin1028的博客
11-03 2万+
Python爬虫小白入门经典之爬取网上音乐 前言:在知识付费的时代,免费听音乐已经成了历史,但是随着时代的发展,技术宅男依旧可以获取免费音乐资源,下面我就来教你如何免费获取网络免费音乐资源。部分方法来源于网络,若侵权请告知删除。 如果你想小白变大神,请学习我给你分享的资料,另外,想要获取Python免费资料,请关注公众号:“zhulin1028”;回复“python1"、“python2”、“python3”,即可免费获取。更有很多面试资料供你获取。 1.需要的Python模块 实现这个过程的主要模块有r
python爬虫音乐下载
weixin_41324527的博客
05-22 2万+
使用爬虫实现音乐下载需要用到以下几点内容 requests请求   文件操作  一点点正则表达式首先,分析我们要爬取的网站,这里用到的是 好听轻音乐网,第一步,选择任意一首歌点击加号,添加到列表。2.第二步,多添加几首,打开开发者工具,播放下一首,会发现,network中多了一个5的资源包3. 鼠标右键点击这个资源包,copy->copy link dress, 在新窗口中打开,发现这个就是...
Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用
qq_64241302的博客
08-08 5371
接下来就非常简单了,我们已经找到了每个要搜索的歌手的详情网页的规律(固定网址+歌手名字+.html),我们有获取了每一首歌曲的详情页面(那一段没有规律的英文字母),最后又在歌曲详情页面找到了包含歌曲链接的数据包,所以接下来我们要做的就是,将歌曲链接用二进制保存下来,学过爬虫的同学应该注意到了,上面这个数据包的响应数json数据,返回的是一个字典形式的数据,我们可以根据键值对来取出我们需要的歌曲的下载链接。接着,便要对网站进行抓包,并对网页链接寻找规律,当然,这个小网站的网页链接的规律也是非常之简单。
Python实战】入门级都能学懂的Python爬虫之仅需8行代码一键免费下载音乐,听歌自由真这么简单?
xy258009的博客
04-19 2391
发现周董的歌还是挺适合当车载音乐的,今天小编就浅浅的教一些新手入门的同学学一下这个超简单的音乐爬虫代码哈!
5. 超炫酷的爬虫源代码-vip音乐下载
weixin_63986098的博客
06-09 3077
它可以发送GET、POST、PUT、DELETE等请求,支持HTTPS、Cookie、Session等功能。GUI的出现使得计算机操作更加直观、易用,用户可以通过图形化的界面进行操作,而不需要记忆复杂的命令行指令。vscode打开的是【安迪笔记】文件夹,下载音乐在【安迪笔记】文件夹里的【KuWoMusic】文件夹里。它可以帮助我们处理一些不稳定的操作,比如网络请求、数据库连接等,提高程序的健壮性和可靠性。我衷心希望大家有空没空多研究下相对路径的知识,这个问题问我回答的头疼,太浪费我的时间了。
python爬虫源代码】用python爬取百度搜索搜索结果!
05-17
python爬取百度搜索结果,字段包含:页码、标题、百度链接、真实链接、简介、网站名称。文件包含: 1、baidu_spider_0326.py 爬虫源码文件 2、爬取百度_马哥是谁_前5页.csv 爬取结果示例 - 同步讲解文章:https://zhuanlan.zhihu.com/p/479674917 同步讲解视频:https://www.zhihu.com/zvideo/1485565507402817537 - 我是【马哥python说】作者本人,全网各大技术平台,搜索即可了解我。
Python爬虫 - 全网精华资源汇总.rar
03-18
Python爬虫 _ 全网精华资源汇总
python爬虫自动下载图片脚本
06-27
提供python爬虫下载图片的自动化脚本源代码供大家参考,如有不理解的地方可以下载体验。个人原创,仅供参考。
爬虫脚本项目源码-音乐播放器
02-27
爬虫脚本项目源码-音乐播放器
python爬虫基础包含scrapy框架笔记
09-06
从0到1,全网最详细,学会了会忘,结合笔记看,忘了还能回来复习,当个文档查查。
python爬取腾讯vip_python 爬取QQ音乐
weixin_39603995的博客
11-23 1233
import requestsimport jsonimport osimport 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) Chrom...
手把手教你用Python网络爬虫获取网易云音乐歌曲
pdcfighting的博客
05-20 2246
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地。 跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两个参数,其实爬取歌曲也是同样的道理,也需要传入这两个参数,只不过网易云歌曲的URL一般人找不到。不过也不要慌,有小编在,分分钟扫除您的烦恼。 网易云歌曲一般会有一个外链,专门用于下载音乐音频的,以赵雷的歌曲《成都》为例,《成都》的
python爬虫实现音乐下载
m0_59235508的博客
02-07 1148
本文详细地的介绍了在window10上使用python爬虫爬取目标数据,再将我们获取的数据存入到自己的MongoDB数据库,并实现了酷我音乐下载任何歌曲。
写一段python代码,全网寻找并下载机器人相关文献资料
02-06
这是一段示例代码,它将使用 Python 的 requests 库从网站中下载机器人相关文献资料。 ``` import requests # 设置文献的 URL 地址 url = "https://www.example.com/robotics-papers" # 发送 HTTP 请求并获取响应 response = requests.get(url) # 如果响应成功,则将文献内容写入文件 if response.status_code == 200: with open("robotics-papers.pdf", "wb") as f: f.write(response.content) print("文献已下载到当前目录下的 'robotics-papers.pdf' 文件中。") else: print("无法下载文献。") ``` 请注意,上述代码仅演示了如何下载单个文献,如果需要在网络上搜索下载多个文献,则可能需要使用网络爬虫来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
103
原创
750
点赞
3513
收藏
564
粉丝
关注
私信
写文章

热门文章

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

分类专栏

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

最新评论

  • 4. LaTeX 表格样式与常用表格类型

    随便963: 非常详细,太感谢了!

  • 【专题】详解Python中的反射机制

    日新不已: 感觉很多地方描述的都是想当然。

  • 详解深度学习之 Embedding

    不喝咖啡不会科研: 应该是nn.Embedding(4,2) 单词的个数是4个

  • 2. 科研绘图之 matplotlib 图形窗口

    予你玉簪: 怎么使图表更改同时标题更改而不重叠,求问

  • AxGlyph矢量绘图软件

    Vickyhhhhhhh: 在下载包里没有看到补丁呜呜呜

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

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

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司保定百度标王价格海西seo排名哪家好贺州网站制作设计黄南高端网站设计推荐常德百搜标王哪家好南联高端网站设计哪家好南澳外贸网站建设推荐黔东南网络营销多少钱丽江百度网站优化排名推荐南充网站推广系统报价亳州SEO按天计费鞍山网站搭建报价霍邱百姓网标王石家庄建设网站公司济宁网页制作多少钱大理建设网站推荐伊春百度标王报价东营网站推广工具报价太原网站排名优化价格张掖网页制作价格天水关键词按天收费推荐临夏网站优化哪家好大庆网站建设设计报价昌都网站改版价格霍邱百度竞价包年推广报价中卫模板推广多少钱铜仁百姓网标王推广多少钱中卫营销型网站建设公司十堰模板网站建设哪家好贺州百度网站优化公司歼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 网站制作 网站优化