news 2026/6/11 13:59: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/30 10:27:33

WebUI界面响应慢?优化前端缓存策略,加载速度提升50%

WebUI界面响应慢?优化前端缓存策略,加载速度提升50% 📌 问题背景:语音合成服务的用户体验瓶颈 在部署基于 ModelScope Sambert-Hifigan 的中文多情感语音合成服务后,尽管模型推理质量高、环境稳定,但在实…

作者头像 李华
网站建设 2026/6/10 0:27:50

新手必看:proteus8.17下载及安装注意事项

新手也能一次成功的 Proteus 8.17 安装指南:从下载到点亮第一个LED你是不是也经历过这样的时刻?兴冲冲地打开电脑,准备开始学单片机仿真,结果卡在第一步——Proteus 8.17 下载及安装失败。明明按照教程一步步来,却总是…

作者头像 李华
网站建设 2026/6/10 11:16:08

【收藏必学】前端开发者如何应对AI冲击?转型AI赛道的机会与策略

文章分析了AI对前端开发的影响,指出前端因业务逻辑简单和开源语料丰富而面临较大冲击。AI在前端开发中主要提升业务逻辑编码环节效率,整体提效约20%-30%。文章强调前端开发者转型AI具有优势,应主动获取业务KnowHow,将提示词视为&q…

作者头像 李华
网站建设 2026/5/29 1:41:07

CRNN OCR在身份证识别中的精准应用

CRNN OCR在身份证识别中的精准应用 📖 项目简介:高精度OCR为何选择CRNN? 光学字符识别(OCR)作为连接物理世界与数字信息的关键技术,广泛应用于文档数字化、身份核验、票据处理等场景。尤其在身份证识别这类…

作者头像 李华