利用Python网络爬虫实现对网易云音乐歌词爬取

优采云 发布时间: 2020-08-11 10:45

  本文的总体思路如下:

  找到正确的URL,获取源码;

  利用bs4解析源码,获取歌曲名和歌曲ID;

  调用网易云歌曲API,获取歌词;

  将歌词写入文件,并存入本地。

  本文的目的是获取网易云音乐的歌词,并将歌词存入到本地文件。整体的效果图如下所示:

  

  本文以摇滚歌神赵雷为数据采集对象,专门采集他的歌曲歌词,其他歌手的歌词采集方式可以类推,下图展示的是《成都》歌词。

  在这里相信有许多想要学习Python的朋友,大家可以+下Python学习分享裤:叁零肆+零伍零+柒玖玖,即可免费发放一整套系统的 Python学习教程!

  

  一般来说,网页上显示的URL就可以写在程序中,运行程序以后就可以采集到我们想要的网页源码。But在网易云音乐网站中,这条路行不通,因为网页中的URL是个假URL,真实的URL中是没有#号的。废话不多说,直接上代码。

  

  本文借助requests、bs4、json和re模块来采集网易云音乐歌词,记得在程序中添加headers和反盗链referer以模拟浏览器,防止被网站拒绝访问。这里的get_html方式专门用于获取源码,通常我们也要做异常处理,未雨绸缪。

  获取到网页源码以后,分析源码,发现歌曲的名子和ID藏的太深,纵里寻她千百度,发现她在源码的294行,藏在

  标签下,如下图所示:

  

  接下来我们借助美丽的汤来获取目标信息,直接上代码,如下图:

  

  此处要注意获取ID的时侯须要对link进行切块处理,得到的数字便是歌曲的ID;另外,歌曲名是通过get_text方式获取到的,最后借助zip函数将歌曲名和ID一一对应并进行返回。

  得到ID以后便可以步入到内页获取歌词了,但是URL还是不给力,如下图:

  

  虽然我们可以明白的看见网页上的白纸黑字呈现的歌词信息,但是我们在该URL下却未能获取到歌词信息。小编通过抓包,找到了歌词的URL,发现其是POST恳求还有一大堆看不懂的data,总之这个URL是不能为我们效力。那该点解呢?

  莫慌,小编找到了网易云音乐的API,只要把歌曲的ID置于API链接上便可以获取到歌词了,代码如下:

  

  在API中歌词信息是以json格式加载的,所以须要借助json将其进行序列化解析下来,并配合正则表达式进行清洗歌词,如果不用正则表达式进行清洗的话,得到原创的数据如下所示(此处以赵雷的歌曲《成都》为例):

  

  很明显歌词上面有歌词呈现的时间,对于我们来说其属于杂质信息,因此须要借助正则表达式进行匹配。诚然,正则表达式并不是惟一的方式,小伙伴们也可以采取切块的形式或则其他方式进行数据清洗,在此就不赘言了。

  得到歌词以后便将其写入到文件中去,并存入到本地文件中,代码如下:

  

  现在只要我们运行程序,输入歌手的ID以后,程序将手动把该歌手的所唱歌曲的歌词抓取出来,并存到本地中。如本例中赵雷的ID是6731,输入数字6731以后,赵雷的歌词将会被抓取到,如下图所示:

  

  之后我们就可以在脚本程序的同一目录下找到生成的歌词文本,歌词就被顺利的爬取出来了。

  相信你们对网易云歌词爬取早已有了一定的认识了,不过easier said than down,小编建议你们动手亲自敲一下代码,在实践中你会学的更快,学的更多的。

  这篇文章教会你们怎么采集网易云歌词,那网易云歌曲怎么采集呢?且听小编下回分解~~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线