news 2026/5/11 1:47:04

python爬取音乐的代码。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python爬取音乐的代码。
importrequestsimportosfromtqdmimporttqdmfromurllib.parseimporturlparseimporttimedefdownload_audio_with_progress(url,output_filename=None,chunk_size=8192):""" 下载音频文件并显示进度条 Args: url: 音频文件的URL output_filename: 输出文件名(可选) chunk_size: 下载块大小 """# 如果未指定输出文件名ifoutput_filenameisNone:parsed_url=urlparse(url)filename=os.path.basename(parsed_url.path)iffilename.endswith('.m4a'):filename=filename[:-4]+'.mp3'else:filename='audio.mp3'output_filename=filename# 确保是mp3扩展名ifnotoutput_filename.endswith('.mp3'):output_filename+='.mp3'# 请求头headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36','Referer':'https://music.163.com/','Accept-Encoding':'identity',# 不压缩,避免进度条计算错误}try:print(f"开始下载:{url}")print(f"目标文件:{output_filename}")# 先发送HEAD请求获取文件信息head_response=requests.head(url,headers=headers,timeout=10,allow_redirects=True)ifhead_response.status_code!=200:print(f"无法访问文件,状态码:{head_response.status_code}")returnFalse# 获取文件大小total_size=int(head_response.headers.get('content-length',0))iftotal_size==0:print("无法获取文件大小,使用简单下载方式...")response=requests.get(url,headers=headers,timeout=30)ifresponse.status_code==200:withopen(output_filename,'wb')asf:f.write(response.content)print(f"下载完成:{output_filename}")returnTrueelse:print(f"下载失败,状态码:{response.status_code}")returnFalseprint(f"文件大小:{total_size}bytes ({total_size/1024/1024:.2f}MB)")# 下载文件response=requests.get(url,headers=headers,stream=True,timeout=30)response.raise_for_status()# 使用进度条progress_bar=tqdm(total=total_size,unit='B',unit_scale=True,desc="下载进度")start_time=time.time()downloaded=0withopen(output_filename,'wb')asfile:forchunkinresponse.iter_content(chunk_size=chunk_size):ifchunk:file.write(chunk)downloaded+=len(chunk)progress_bar.update(len(chunk))progress_bar.close()# 计算下载速度download_time=time.time()-start_time download_speed=downloaded/download_time/1024# KB/sprint(f"\n✓ 下载完成!")print(f"文件:{output_filename}")print(f"大小:{downloaded}bytes ({downloaded/1024/1024:.2f}MB)")print(f"用时:{download_time:.2f}秒")print(f"平均速度:{download_speed:.2f}KB/s")returnTrueexceptrequests.exceptions.RequestExceptionase:print(f"网络请求错误:{e}")returnFalseexceptExceptionase:print(f"下载过程出错:{e}")returnFalse# 使用示例if__name__=="__main__":url="https://m804.music.126.net/20260109213219/ee92fda0d2911d7370c96aa34eb815cb/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/32476997212/2f07/079a/b3d6/8d7289ffa74ff0440ef61a183f2bb5a3.m4a?vuutv=MRWyryPhgRfUqVNXymxtqJwVWD7my2buPLQ0Tfa7IqdyJXX+CoI8CokjgMRbmooCGheI8cBob0+D9z7L3f+8ktVpmdJEeFic3eXu9BX++G0=&authSecret=0000019ba2de593002870a64a80a0006"# 指定输出文件名output_filename="my_music.mp3"# 下载文件success=download_audio_with_progress(url,output_filename)ifsuccess:print("\n🎵 音频文件下载完成!")else:print("\n❌ 下载失败")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 14:23:57

语音合成部署太复杂?免配置镜像让效率提升5倍

语音合成部署太复杂?免配置镜像让效率提升5倍 🎯 为什么语音合成落地如此困难? 在智能客服、有声阅读、虚拟主播等场景中,高质量的中文语音合成(TTS)已成为不可或缺的技术能力。然而,尽管 Mod…

作者头像 李华
网站建设 2026/5/8 0:18:46

理解Keil5添加文件机制在工控设备中的作用

工控开发中,Keil5添加文件不只是“点一下”那么简单在工业自动化现场,一台PLC控制器可能连续运行十年不关机;一个变频器的固件升级,必须确保零差错。这些高可靠性的背后,是嵌入式软件工程严谨到极致的设计与管理——而…

作者头像 李华
网站建设 2026/5/10 18:00:40

教育场景AI落地:用多情感语音合成生成课件音频,一周完成部署

教育场景AI落地:用多情感语音合成生成课件音频,一周完成部署 🎯 业务场景与痛点分析 在当前在线教育、智能教学系统快速发展的背景下,高质量、富有表现力的课件音频生成成为提升学习体验的关键环节。传统录播课程依赖真人配音&…

作者头像 李华
网站建设 2026/5/1 1:02:58

吐血推荐MBA必用TOP9 AI论文平台

吐血推荐MBA必用TOP9 AI论文平台 2026年MBA学术写作工具测评:精准筛选,高效助力 随着AI技术在学术领域的深入应用,越来越多的MBA学生和从业者开始依赖智能写作工具提升论文效率与质量。然而,面对市场上琳琅满目的AI平台&#xff…

作者头像 李华
网站建设 2026/4/29 13:50:20

手把手教你完成USB 3.0高速布线设计

手把手教你搞定USB 3.0高速PCB布线:从原理到实战的硬核指南你有没有遇到过这样的情况?板子焊好了,上电也正常,但插个U盘就是识别不了;或者传输大文件时频繁掉速、丢包——明明用的是“USB 3.0”,速度却像在…

作者头像 李华