文 | 轩辕御龙

来源:Python 技术「ID: pythonall」

动机是啥

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

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

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

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

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

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

01

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

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

选择的方法

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

02

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

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

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

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

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

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

开工

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

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

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

04

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

05

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

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

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

03

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

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

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

06

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

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

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

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

from bs4 import BeautifulSoupresponse = 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])

文件内容如下:

07

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

from bs4 import BeautifulSoupwith 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])

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

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起100天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式】

识别文末二维码,回复:200630

网易云音乐导出歌单-速食版相关推荐

  1. 网易云音乐api歌单数据获取

    网易云音乐api歌单数据获取 网易作为IT大厂,数据可以说 藏的很严实,普通按个f12以为能搞到点东西,结果,看不到要的歌单信息,这可是愁死我了啊. 后来看了看知乎,一帮怪才集中的地方果然迸发了思维的 ...

  2. 如何将网易云音乐的歌单同步到spotify

    为什么要用Spotify? 1.网易云的弊端 1).网易云大量用户涌入,鱼龙混杂,有目共睹. 2).成也评论,败也评论.带上社交属性的音乐还是音乐吗? 3).我不喜欢网易云的一系列行为. 2.Spot ...

  3. Python Scrapy 多线程爬取网易云音乐热门歌单信息(手把手教学)

    下面我将向大家介绍使用 Scrapy 爬虫获取 网易云音乐 的热门歌单信息. 这里是网易云音乐的歌单页面,可以看到歌单信息非常得结构化,是非常适合爬虫来爬取的. URL:全部歌单 - 歌单 - 网易云 ...

  4. 2018最新版网易云音乐导入歌单

    正题前的废话 我是个很喜欢听音乐的人,一天不听音乐就憋得慌. 我喜欢用网易云.我有一个特点,一旦用了这个软件,打死我也不会去用另一款同样功能的软件. 所以当网易云上面一片一片地灰掉的时候,我非常非常地 ...

  5. python爬取网易云音乐排行榜歌单热评(完整版)

    完整版的爬取网易云音乐的排行榜单,和推荐榜单,热评 直接上代码,代码写的很清楚 为了防止被封我们先做个随机获取User_Agent """随机获取请求头"&qu ...

  6. 抓取网易云音乐网页歌单(url)js

    var importJs=document.createElement('script') //在页面新建一个script标签 importJs.setAttribute("type&quo ...

  7. 「网易云音乐」歌单推荐算法

    推荐算法可以通过APP表现进行反推,不会100%准确,但应该也八九不离十. 推荐依据 推荐算法不是无根之水,它必须借助用户的数据才可以进行推荐.即使是冷启动,也需要获得你的微博.微信(你的登录方式)或 ...

  8. [转知乎]网易云音乐的歌单推荐算法是怎样的?

    转载:http://www.zhihu.com/question/26743347 原因:在喜欢网易云音乐的基础上,觉得这些算法分析很有意思. 一.作者:邰原朗,大型程序猿 得票数第一. 这就是ama ...

  9. 网易云音乐年度歌单的卡通形象联动制作

    最近朋友圈被很多网易云音乐的年底歌单给刷屏了, 我也去看了我的年度歌单, 发现一个有意思的交互效果, 选择卡通形象, 通过滑动选择人物的不同头像,衣服,裤子 最终塑造成一个拥有独立个性的卡通形象. 界 ...

最新文章

  1. Oracle数据库执行exp命令--报参数'log' 不允许有多个值
  2. 马斯克发推警告:高级AI将操纵社交媒体,或引发第三次世界大战
  3. Gentoo 安装日记 18(重新配置网络和设置密码)
  4. 绝了!Pandas绘图功能
  5. java object monitor_Java精通并发-通过openjdk源码分析ObjectMonitor底层实现
  6. python——学习笔记1
  7. 如何安装mysql5.7.25_Centos7 yum安装MySQL5.7.25
  8. 黑马程序员—————— 随机访问流
  9. MyBatis 使用
  10. 计算机系统自带的文字处理程序,如何使用win7系统电脑的内置字符编辑程序
  11. 大数据的发展体现在哪些方面
  12. 个人技能总结7--Apache服务器反向代理,负载均衡,热备份+Tomcat配置
  13. 大数据用kettle还是python_Kettle学习系列之Kettle能做什么?(三)
  14. Wordpress SEO 搜索引擎优化
  15. VMware虚拟机的安装与创建
  16. Ecshop V4.1.6 安装
  17. [MSSQL] 数据库置疑怎么处理?
  18. 高通平台如何抓RAMDUMP
  19. 快捷键打开管理员cmd
  20. 开源自己开发的一款宠物小精灵游戏

热门文章

  1. CDC *pDC=GetDC();具体是什么意思?
  2. 电子元器件企业面临缺货涨价,SRM协同系统助力企业采购数字化智慧升级
  3. 2020风中劲草pdf电子版完整版 下载
  4. 饿了么组件el-image使用本地图片
  5. 计算机听课与评课活动记录表,听课 评课记录表参考
  6. 同一局域网内手机访问电脑本地localhost网页
  7. Java 矩阵主对角线所有数字之和
  8. 【Mysql系列】如何实现王者荣耀排名
  9. python五大模块_python-5-常用模块
  10. 基于Springboot的在线租车,自租车,企业租车管理系统,基于Idea开发