我又滚回来更新了,这一次我们的目标是网易云音乐,想要通过输入歌单的链接,然后把整个歌单的歌曲都下载下来,说做就做,看看这一次有会遇见怎样的问题把。
需要注意的点:
- 这一次使用的框架仍然是scrapy,不同于上个框架的是这一回加上了selenium,我是蛮不想借助这个的,但是让工具发挥他最大的用处,这才是我们该做的
- VIP才能下载的音乐依然无法下载,现在还没有那个实力,只能下载歌单中不是vip的音乐
- 本文用于技术交流,如果侵犯版权立即删除,任何人不能用于商业用途
好的,那我们就开始吧,一开始我们先来分析一下网易云的歌单
这是这一次要分析的网址: https://music.163.com/#/playlist?id=61650863 ,顺便卖一波安利,这个歌单蛮不错的,喜欢纯音乐的朋友可以听听看。
首先我们要做的是获取这个歌单所有的歌曲的链接和名字,一开始觉得应该没有什么难度,
就算歌单是动态加载的,找起来应该也没有什么难度,但是事实是对现在的我确实是蛮难的。
右键网页源代码,搜索Rain after Summer(歌单第一首歌)发现果然是没有的
接下来便是在f12中查找,确实发现了歌单的信息,本来接下来就是
response = requests.get(url,headers=DEFAULT_REQUEST_HEADERS)
但即使发所有的request headers都加上了,这部分内容页面没能显示出来,要是有朋友知道这是怎么回事,希望可以多多指教。
但是我们是不能在一颗树上吊死的,既然这个方法行不通,那么就使别的方法,这次我是使用了selenium,但是用这个的时候也遇见一个坑了,在使用selenium之后本来以为所有问题都会迎刃而解的,但是发现仍然搜索不到任何有关歌单的信息,就纠结测试了许久之后,终于发现了问题的所在,一切都源于他
这是一个iframe,歌单所有的消息都在这个里面,但是selenium是没有办法自动加载这个里面的内容的,这就导致了我们怎样都看不见歌单的消息。成功得到歌单信息之后,那么就可以开始我们的下载大业了,下面就开始说代码了,里面遇见的问题再一边分析。
使用scrapy进行爬虫,scrapy框架目录结构如下:
在使用命令行创建scrapy之后,首先是在setting.py中将机器人协议改为false