【Python】网易云音乐下载脚本
【Python】网易云音乐下载脚本
复制上方蓝色关注我们更有料
高考完一直想写点程序,但发现自己初中学的 Python 都忘光了,于是又重新学了一下。
有一天用以前看到的方法下载网易云上面的音乐的时候,突发奇想,想写一个自动化脚本,这样就可以全自动下载音乐了 {:301_997:}
详细的下载方法网上能够找到 https://www.bilibili.com/video/BV1Te4y1F7br/,这里就不再赘述了,想理解原理的朋友可以看一下。
这个自动化脚本主要是基于 playwright 库编写的,通过模拟浏览器操作来下载,可以做到能试听的音乐就可以下载。
大体过程可以分为三步:
1、向用户发送登录请求,用户扫码登录网易云音乐后保存登录信息,下一次使用可以直接加载。
2、进入歌曲详情页时,模拟点击播放按钮
3、拦截传输的 m4a 文件并下载
使用指南:
1、先安装 playwright 库及其依赖的浏览器内核,可通过如下命令安装:
| pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple |
| |
2、新建一个文件夹,将 first.py 和 main.py 两个文件放在里面,先运行 first.py,并按照页面上的指示进行扫码登录(如果有些卡顿的话可以退出重进一下)
3、运行 main.py,将想要下载的音乐的详情页地址复制下来,粘贴到程序中,按回车就可以自动下载了。
下面直接上代码:
1、first.py 文件代码:
| from playwright.sync_api import sync_playwright |
| |
| with sync_playwright() as p: |
| browser = p.chromium.launch(headless=False) |
| context = browser.new_context() |
| page = context.new_page() |
| |
| |
| page.goto("https://music.163.com") |
| page.get_by_role("link", name="登录").click() |
| |
| |
| page.wait_for_timeout(1000) |
| print |
| |
| |
| input |
| |
| |
| context.storage_state(path="login.json") |
| print |
| |
| |
2、main.py 代码
| import |
| from playwright.sync_api import Playwright, sync_playwright |
| from urllib.request import urlretrieve |
| |
| |
| |
| |
| # 通过响应代码找出下载链接 |
| defadd_list |
| if |
| url_list.append(response.url) |
| # 下载函数 |
| defdownload(playwright: Playwright,url1): |
| browser = playwright.chromium.launch() |
| context = browser.new_context(storage_state="login.json") # 加载登录信息 |
| page = context.new_page() |
| page.on("response", add_list) |
| |
| # 模拟点击播放按钮 |
| page.locator("iframe[name="contentFrame"]").content_frame.get_by_role("link", name="播放", exact=True).click() |
| page.wait_for_timeout(1000) # 等待页面加载,可适当延长或缩短 |
| name_list.append(page.title()) |
| save_path = name_list[0] + ".m4a" |
| urlretrieve(url_list[0], save_path) # 下载音乐 |
| print |
| # 清空重置列表 |
| |
| |
| |
| |
| with sync_playwright() as playwright: |
| urls = input("请输入下载链接(多个链接可用空格隔开):").split() |
| for |
| download(playwright,each) |
| print |
效果演示:


最后再说说编写代码过程中的心得吧
我发现现在 AI 真的是特别强大,“将登陆状态保存”这个思路就是 AI 启发我的,并且帮我写了 first.py 文件的一部分代码。
另外,在编写自动化测试脚本的过程中,可以直接调用 playwright 中的 codegen 功能,直接根据操作生成代码,大大提升代码编写效率。
最后希望大家多多评分和发表跟帖,谢谢大家!
🎉欢送福利
✨福利一:免费获取积分方式:登录奖励,每日签到,日积月累,每日任务,解锁资源,邀请赚佣金,互助互利。免费获得积分兑换资源!!!
✨福利二:简单任务免费开通会员
✨福利三:免费领取一份实用资料
欲知资源请点击“源码佳”公众号,了解下载更多好源码,系统
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。