首页 > 编程语言 >一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取

时间:2023-04-23 11:32:35浏览次数:52  
标签:网易 获取 Python 歌词 爬虫 抓取 URL 源码 ID


一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云音乐

前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法。 本文的总体思路如下: 找到正确的URL,获取源码; 利用bs4解析源码,获取歌曲名和歌曲ID; 调用网易云歌曲API,获取歌词; 将歌词写入文件,并存入本地。 本文的目的是获取网易云音乐的歌词,并将歌词存入到本地文件。整体的效果图如下所示:

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云音乐_02

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

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_正则表达式_03

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

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_正则表达式_04

本文利用requests、bs4、json和re模块来采集网易云音乐歌词,记得在程序中添加headers和反盗链referer以模拟浏览器,防止被网站拒绝访问。这里的get_html方法专门用于获取源码,通常我们也要做异常处理,未雨绸缪。 获取到网页源码之后,分析源码,发现歌曲的名字和ID藏的很深,纵里寻她千百度,发现她在源码的294行,藏在


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

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云音乐_05

此处要注意获取ID的时候需要对link进行切片处理,得到的数字便是歌曲的ID;另外,歌曲名是通过get_text()方法获取到的,最后利用zip函数将歌曲名和ID一一对应并进行返回。 得到ID之后便可以进入到内页获取歌词了,但是URL还是不给力,如下图:

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_正则表达式_06

虽然我们可以明白的看到网页上的白纸黑字呈现的歌词信息,但是我们在该URL下却无法获取到歌词信息。小编通过抓包,找到了歌词的URL,发现其是POST请求还有一大堆看不懂的data,总之这个URL是不能为我们效力。那该点解呢? 莫慌,小编找到了网易云音乐的API,只要把歌曲的ID放在API链接上便可以获取到歌词了,代码如下:

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云_07

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

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云音乐_08

很明显歌词前面有歌词呈现的时间,对于我们来说其属于杂质信息,因此需要利用正则表达式进行匹配。诚然,正则表达式并不是唯一的方法,小伙伴们也可以采取切片的方式或者其他方法进行数据清洗,在此就不赘述了。 得到歌词之后便将其写入到文件中去,并存入到本地文件中,代码如下:

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云音乐_09

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

一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取_网易云音乐_10

之后我们就可以在脚本程序的同一目录下找到生成的歌词文本,歌词就被顺利的爬取下来了。 相信大家对网易云歌词爬取已经有了一定的认识了,不过easier said than down,小编建议大家动手亲自敲一下代码,在实践中你会学的更快,学的更多的。

标签:网易,获取,Python,歌词,爬虫,抓取,URL,源码,ID
From: https://blog.51cto.com/u_13389043/6216931

相关文章

  • 关于python爬虫解析的问题
    在进行Python爬虫解析时,需要注意以下事项:1、良好的网站使用协议:需要遵守网站的robots.txt文件,以确保你的爬虫程序不会将网站拦截下来。2、编码问题:需要正确设置HTTP头和解析器的编码,以确保爬虫程序能够正确地解析网站的信息。3、数据解析:需要适当地处理HTML文档中的标签,以便从......
  • python变量名规则&大小写敏感
    1.变量名由英文字母、下划线_或数字组成(不能包含空格、%、-、*、/、&、^等),并且第一个字符必须是英文字母或下划线。 2.变量名不能是Python关键字。(关键字指的是Python本身“已经在使用”的名字,Python已经占用了这些名字,所以我们不能用)常见的关键字:True False None(注意......
  • 反爬虫的所有套路和策略
    反爬虫是一种防止网络爬虫抓取网站内容的技术。为了保护网站的数据安全,网站管理员采用了各种策略来阻止或限制爬虫的访问。以下是一些常见的反爬虫策略和相应的例子:User-Agent检查:检查请求头的User-Agent字段来识别爬虫。例如,如果User-Agent是一个非常规浏览器的标识符,网......
  • Python time 库常用函数
    time模块中时间表现的格式主要有三种:timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量struct_time时间元组,共有九个元素组。formattime格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。使用time库前先用import导......
  • python3-hex
    hex函数,参数可以是一个int整数或一个bytes类型元素,转为0x的十六进制字符串形式withopen(file='J:/新建文本文档.txt',mode='rb')asf:s=f.read()print(type(s),s)result=''foriins:result+=hex(i)print(result)<class'......
  • 基于 Python 开发的外星人入侵小游戏
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]玩家通过鼠标控制飞船行动和射击,若能在敌人到达游戏界面底端之前消灭所有敌人,则游戏胜利,否则游戏失败。导语写了个低配版的外星人入侵小游戏来作为19年的第一更吧~让我们愉快地开始吧~开发工具**Python版本:**3.6.4相关模块:pygame......
  • Python 字符串占位符
    字符串不能修改使用+运算符拼接字符串,字符串与非字符串不能直接拼接。 弊端:如果变量过多,拼接起来很麻烦;字符串与非字符串之间无法进行拼接 name="Tom"info="%sis18yearsold"%name %s是占位符:%表示要占位s表示将引入的变量转为字符串放入该......
  • Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测|附代码数据
    全文下载链接:http://tecdat.cn/?p=20678最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。在本文中,预测股价已经受到了投资者,政府,企业和学者广泛的关注。然而,数据的非线性和非平稳性使得开发预测模型成为一项复杂而具有挑战性的任务在本文中,我将解释如何将 ......
  • Python 环境搭建
    Python环境搭建https://www.python.org/downloads/      验证  ......
  • 搞懂Python正则表达式,这一篇就够了
    本文代码基于Python3.11解释器,除了第一次示例,代码将省略importre这个语句所有示例代码均可以在我的github仓库中的code.py文件内查看[我的仓库](PythonLearinig/正则表达式atmain·saopigqwq233/PythonLearinig(github.com))搞清楚Python正则表达式语法,这一篇就够了......