网易云音乐html
前几天小编给你们分享了数据可视化分析,在文尾说起了网易云音乐歌词爬取,今天小编给你们分享网易云音乐歌词爬取方法。正则表达式
本文的整体思路以下:json
找到正确的URL,获取源码;浏览器
利用bs4解析源码,获取歌曲名和歌曲ID;ide
调用网易云歌曲API,获取歌词;函数
将歌词写入文件,并存入本地。网站
本文的目的是获取网易云音乐的歌词,并将歌词存入到本地文件。总体的效果图以下所示:3d
赵雷的歌曲cdn
本文以民谣歌神赵雷为数据采集对象,专门采集他的歌曲歌词,其余歌手的歌词采集方式能够类推,下图展现的是《成都》歌词。htm
赵雷歌曲---《成都》
通常来讲,网页上显示的URL就能够写在程序中,运行程序以后就能够采集到咱们想要的网页源码。But在网易云音乐网站中,这条路行不通,由于网页中的URL是个假URL,真实的URL中是没有#号的。废话很少说,直接上代码。
获取网页源码
本文利用requests、bs四、json和re模块来采集网易云音乐歌词,记得在程序中添加headers和反盗链referer以模拟浏览器,防止被网站拒绝访问。这里的get_html方法专门用于获取源码,一般咱们也要作异常处理,未雨绸缪。
获取到网页源码以后,分析源码,发现歌曲的名字和ID藏的很深,纵里寻她千百度,发现她在源码的294行,藏在<ul class="f-hide">标签下,以下图所示:
歌曲名和ID存在的位置
接下来咱们利用美丽的汤来获取目标信息,直接上代码,以下图:
获取歌曲名和ID
此处要注意获取ID的时候须要对link进行切片处理,获得的数字即是歌曲的ID;另外,歌曲名是经过get_text()方法获取到的,最后利用zip函数将歌曲名和ID一一对应并进行返回。
获得ID以后即可以进入到内页获取歌词了,可是URL仍是不给力,以下图:
歌词的URL
虽然咱们能够明白的看到网页上的白纸黑字呈现的歌词信息,可是咱们在该URL下却没法获取到歌词信息。小编经过抓包,找到了歌词的URL,发现其是POST请求还有一大堆看不懂的data,总之这个URL是不能为咱们效力。那该点解呢?
莫慌,小编找到了网易云音乐的API,只要把歌曲的ID放在API连接上即可以获取到歌词了,代码以下:
调用网易云API并解析歌词
在API中歌词信息是以json格式加载的,因此须要利用json将其进行序列化解析出来,并配合正则表达式进行清洗歌词,若是不用正则表达式进行清洗的话,获得原始的数据以下所示(此处以赵雷的歌曲《成都》为例):
原始数据
很明显歌词前面有歌词呈现的时间,对于咱们来讲其属于杂质信息,所以须要利用正则表达式进行匹配。诚然,正则表达式并非惟一的方法,小伙伴们也能够采起切片的方式或者其余方法进行数据清洗,在此就不赘述了。
获得歌词以后便将其写入到文件中去,并存入到本地文件中,代码以下:
写入文件和程序主体部分
如今只要咱们运行程序,输入歌手的ID以后,程序将自动把该歌手的所唱歌曲的歌词抓取下来,并存到本地中。如本例中赵雷的ID是6731,输入数字6731以后,赵雷的歌词将会被抓取到,以下图所示:
程序运行结果
以后咱们就能够在脚本程序的同一目录下找到生成的歌词文本,歌词就被顺利的爬取下来了。
相信你们对网易云歌词爬取已经有了必定的认识了,不过easier said than down,小编建议你们动手亲自敲一下代码,在实践中你会学的更快,学的更多的。
这篇文章教会你们如何采集网易云歌词,那网易云歌曲如何采集呢?快戳小编以前的文章吧~~