免费爬取歌曲的脚本
本脚本依托于网站歌曲宝的资源,这个网站的歌曲可以进行免费的下载。
但是一首一首下载歌曲太慢了,怎么办?
所以就诞生了本脚本
本脚本用于批量下载某个歌手的热门歌曲,不用一首一首下载
当然啊,如果,你有想下载歌曲的 id ,也可以直接修改程序进行批量的歌曲下载
使用方法
- 首先定义自己想要哪些歌手的歌曲,把名字放入
get_list.py
中的singer_list
变量中(最好一个一个来,或者少一点,不要太多了,像博主放了几十个singer后面就很多下载失败了,而且可能会受到网站制裁吧) - 运行
get_list.py
- 然后运行
version2.py
- 后面下载好的歌曲就会在当前文件夹的
downloads
目录下,包括歌词和mp3歌曲文件
方法原理
-
如图,可以看到通过链接用浏览器访问链接
https://www.gequbao.com/s/%E5%91%A8%E6%9D%B0%E4%BC%A6
就可以得到一个歌曲列表,通过解析a标签,把他的href属性值拿出来,然后在拿到 ID 值就知道歌曲的编号了 -
知道了歌曲的编号以后,就能够访问这首歌的主页了,主页的链接https://www.gequbao.com/music/39466 后面的数字就是歌曲的编号,如图
-
通过模拟点击下载歌曲,下载歌词,就能够完成啦。
-
不过有一个特殊处理就是点击下载歌曲以后不是立刻就能直接下载歌曲的,然后会有个弹窗,然后还要再次点击普通下载才行
-
另外再点击普通下载以后不一定能够直接下载,而是一个stream流的一个mp3链接,这里就需要利用request库进行直接请求下载
-
为了程序的健壮性,做了一个简单的异常处理,只要在进行下载的时候出错了,那么当前这首歌的下载就会直接结束,进入下一首。
效果
-
抽取标签保存到文件中
-
模拟浏览器进行下载