网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

动机是啥

随着之前版权大战的落幕,网易云音乐坐拥最忠实的一批用户,但是却在版权上缺失了一大块,带给用户很不好的使用体验。于是很多人纷纷转战QQ音乐等其他竞品。

本来我也就是偶尔听个响,对于听歌没有太大的需求,再一方面也是情怀,所以没有积极拥抱QQ音乐。但是实在架不住每次在网易云音乐要听啥歌没有啥,潜移默化地也就转移到了QQ音乐上。

到了QQ音乐一看,诶嘿,这不行啊,我辛辛苦苦积攒的家底儿都没了嘛这不是?就光秃秃的“我喜欢”,还大小没几首歌。这让习惯了网易云日推的我怎么能习惯啊……

好了,以上都是前情提要。

实际上这篇文章的写作动机就是要把网易云音乐的歌单导入到QQ音乐中去。

本身QQ音乐提供了一个导入网易云音乐歌单的小公举,啊不,咳咳,是小工具。但是奈何出于不可名状的原因,这个工具常年出于抽风状态。其具体症状见下图:

网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

于是乎,官方是靠不住的了。

大力水手曾经曰过:“靠山山倒,靠人人跑。只有靠自己,最好。”自己动手,丰衣足食,现在这个社会谁还没点儿技术了吗?

选择的方法

好吧我承认,我没有技术……

网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

那好家伙,直接用我们社会主义劳动人民的老朋友requests来获取页面信息,返回来的倒也说不上是乱码,但就是没有咱们真正需要的内容——歌曲名称。

行吧,那我配置一下User-Agent。我去还是不行?

咋还出来了一个SSLError?这啥?

上网一查,还得手动关闭SSL证书验证。行叭,走你~

啊不对,不登录好像看不到完整的歌单?那就先登录吧。登录完好像还得在请求头里面加上用cookie来保持认证身份?……

不就是这么一个页面,要啥技术啊,看我暴力破拆。

开工

首先在页面上点击鼠标右键,选中“检查”这一项;或者不点击鼠标,直接按下快捷键Ctrl+Shift+I。会弹出Chrome浏览器的控制台。此时找到其中的元素<table class="m-table ">,这个元素里边包含的就是我们想要的歌单了。

在这个标签内部又分为两大部分:<thead><tbody>。通过移动鼠标观察页面变化,可以发现<tbody>中的内容是主体。

再然后,轻易可以发现<tbody>中的每个子条目都对应于歌单中的一首歌:

网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

抓住这个点就是一顿分析(疯狂查找),一直找到最小的对应于歌曲名字的标签:

网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

行了,现在差不多可以开始编程了。

咱也不用假模假样再去用requests一顿爬了,直接copy-paste搞腚,呸,搞定。

鼠标选中,右键点击,依次选择:

网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

然后新建一个HTML文件,粘贴,保存,哈哈,数据爬下来啦~

请叫我人工全智能手动爬虫工程师。

接下来再利用vscode的HTML格式化插件,把一行的HTML格式化一下,大概就长这样了:

网易云下载的音乐怎么保存到本地(电脑网易云下载的音乐怎么保存到本地)

文件有了,那接下来就好办了。

Python先把文件打开,把文件内容给读取进来:

with open("test.html", "r", encoding="utf-8") as f:
    content = f.read()

此处f.read()返回一个由文本内容组成的字符串,我们使用BeautifulSoup来进行解析:

from bs4 import BeautifulSoup

response = BeautifulSoup(content,'lxml')

仔细考察节点内容,会发现每首歌的名字都在一个特殊的标签<b>中,并且只在歌名处使用了这个标签,因此我们可以直接调用find_all()方法来获取相应节点:

results = response.find_all("b")

由于歌曲名字是以标签<b>的属性title形式存在的,因此我们可以通过节点直接获取相应的属性值:

for result in results:
    print(result['title'])
# 笑红尘 - (电影《东方不败之风云再起》主题曲)
# 爱你在心口难开
# 得意的笑
# 寂寞在唱歌
# ...

最后,我们将得到的歌曲名字统一保存为一个名为“SongList.txt”的文本文件,导出歌单的工作就大功告成了。

with open("SongList.txt", "w+", encoding="utf-8") as f:
    f.writelines([result["title"] for result in results])

此时结果都挤成一堆,所以我们还需要为每一个歌名末尾手动添加一个换行符,最终程序如下:

from bs4 import BeautifulSoup


with open("test.html", "r", encoding="utf-8") as f:
    content = f.read()

response = BeautifulSoup(content,'lxml')

results = response.find_all("b")

with open("SongList.txt", "w+", encoding="utf-8") as f:
    f.writelines([result["title"] + "n" for result in results])

别看文章写了这么多,其实代码非常之简短(毕竟真正有难度的部分已经由资深人工全智能爬虫工程师代劳了),歌单导出已经搞腚了。

本文所有内容来自互联网,如有侵权/不实内容请联系我们删除,联系邮箱postusb@foxmail.com

发布者:缘分,转转请注明出处:https://www.bjxdyg.com/life/187942.html

(0)
缘分缘分
上一篇 2023年 5月 3日 下午12:51
下一篇 2023年 5月 3日

相关推荐

  • 有时候会感到莫名的难过是什么歌(为什么会莫名其妙的难过想哭)

    视频加载中… 多年以后 – 黄静美 词:红豆 曲:曲多美/小米 编曲:熊磊 和声编写:熊磊 和声:徐茜 录音师:冯海波 混音师:宋加栩 统筹:冯海波 配唱制作人:熊磊 制作人:熊磊 监制:韦琪 制作公司:音你而来 有时候会感到莫名的难过 想到这一生到底是图什么 总是反复崩溃然后再愈合 最后一个人默默承受着 或许没有人是真正懂你的 为何…

    趣味生活 2023年 3月 11日
    17700
  • 2022三名航天员名字(2021航天员的名字都有谁)

    大家好,近期很多朋友对于2022三名航天员名字产不是很理解。然后还有一些网友想弄清楚2021航天员的名字都有谁,泰缘号(www.bjxdyg.com)已经为你找到了相关问题的答案,接下来和我们一起看看吧,希望对大家有所帮助! 中共中央 国务院 中央军委 关于给翟志刚、王亚平颁发“二级航天功勋奖章” 授予叶光富“英雄航天员”荣誉称号 并颁发“三级航天功勋奖章”…

    趣味生活 2023年 1月 14日
    31700
  • 2022年贝伐珠单抗多少钱一支(进口贝伐珠单抗2021年价格)

    文/Linan 近日,信达生物贝伐珠单抗注射液挂网价格曝光,作为第二款国产贝伐珠单抗生物类似药,报价均低于原研和国产产品。价格战背后是百亿市场争夺的缩影,并且国内巨头等也即将“参战”,随着欧美市场的专利到期,安进、辉瑞纷纷入局,罗氏这款王牌药恐难掩业绩隐忧… 百亿市场争夺,恒瑞、绿叶等将“参战” 7月10日,陕西省公共资源交易中心发布《关于新批准…

    趣味生活 2022年 8月 23日
    2.5K00
  • 购买星星命名权的网站(购买星星命名权的网站有哪些)

    大家好,近期很多朋友对于购买星星命名权的网站产不是很理解。然后还有一些网友想弄清楚购买星星命名权的网站有哪些,泰缘号(www.bjxdyg.com)已经为你找到了相关问题的答案,接下来和我们一起看看吧,希望对大家有所帮助! 最近刚刚上了大学的王俊凯迎来了她的18岁生日,作为红透中国半边天的tf boy s组合的队长王俊凯的人气自然是毋庸置疑的。此前不管是王俊…

    趣味生活 2022年 12月 8日
    26100
  • 蒙古人均gdp(蒙古人均gdp美元)

    大家好,近期很多朋友对于蒙古人均gdp产不是很理解。然后还有一些网友想弄清楚蒙古人均gdp美元,泰缘号(www.bjxdyg.com)已经为你找到了相关问题的答案,接下来和我们一起看看吧,希望对大家有所帮助! 与全球其他地区的国家相比,蒙古国2021年各季度的经济波动较大。其中,第一季度的经济增长率高达14.8%,是一年当中的峰值;但在第二季度,却由于变异病…

    2022年 10月 26日
    39200

联系邮箱

postusb@foxmail.com

邮箱咨询: QQ交谈

邮箱:postusb@foxmail.com

工作时间:周一至周五,9:30-18:30,节假日休息