python爬虫抓取网易云音乐歌词
python爬虫库的选择
如果你已经了解一些python的基础,那不妨来搞点事情做,比如说做个爬虫,python的爬虫库相当的多,我建议初学者从requests库学起就好,为什么这么说,因为这个库对新手来说特别的友好,Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
安装requests库
要安装 Requests,只要在你的终端中运行这个简单命令即可:pip install requests,前提是你已经安装好pip了。
发送请求
一开始要导入 Requests 模块:
import requests
然后,尝试获取某个网页:
r = requests.get('https://www.baidu.com')
我们可以从r这个对象中获取所有我们想要的信息,但这也仅是 Requests 的冰山一角,requests的中文文档也很全,建议读一下,你会感觉这个库是真的好用,让我们来实战操作一下,可以让你掌握的知识有用武之地。
抓取网易云音乐的歌词
打开网易云随便点开一首歌,找到它的链接,比如:
网页地址栏那里就是当前音乐的地址,点击F12进入开发者模式,找到实际的歌词网址,红色箭头指向的才是它实际的网址:
python爬虫代码
下面这段代码是params,你可以直接复制到下面的代码中
fz7s/Zfb0YZFub+HjxWhGTCjvUmBeXpJB6pSTFhn/ffM0DNClA5LMv1JhWC8pi4WrAICWGMQlcVcV0zrsPaJZo8P4fq7mhieN43eP9iluDrDrCmFSwvCju7uYsPOn/qU','encSecKey':'33604d40f5300f64c2acc4f620fcb31f82c1dd5d04ef019f158c46f17b5c0b32ef129df6549cba55a71dec47bbb407120e59850a9c3380c98a06b6d087a56c169873ec930a55212314e9c91b56b4dedf6709e3ef7e7608055aa8511a6afbc31514f5fe353bbc3900e7a735f4d61263e4051a6c96afc0725187b21e6a7a38d5ce
下面这段代码是headers的代码,我的是谷歌浏览器
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
正式代码如下:
#首先导入用到的库import requestsimport reimport jsondef download_music(): #找入口链接,抓数据 lrc_url = 'http://music.163.com/weapi/song/lyric?csrf_token=' #这是需要传递的form data 和 headers 参数 data = {'params': params} headers = {'User-Agent': headers} #构造requests请求,传入它需要的参数 html = requests.post(lrc_url, data=data, headers=headers) #获取歌词,可以得到歌词字符串 json_obj = html.text #用json.loads方法把str转换成dict json_dic = json.loads(json_obj) #可以看到它是包裹在'lrc'>'lyric'中 lrc = json_dic['lrc']['lyric'] #利用正则把时间段替换掉 pattern = re.compilr(r'[.*]') lrc = re.sub(pattern, '', lrc) print(lrc) #调用download_music函数if __name__ == '__main__': download_music()
代码运行完毕
到这里代码就完成了,你可以自己试着敲一下,里面涉及到的知识点有点多,你可以去网上找一下正则和json方面的知识,了解一下。到这里这篇教程就结束了,下篇文章会给大家带来一样精彩的内容,喜欢的可以点个关注!!!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 编辑距离
- 有序矩阵中第K小的元素
- nodejs库yaml读取yml或yaml配置文件
- 爬虫小白:03.requests的使用
- Oracle GoldenGate 19 Microservices数据同步实战与故障处理
- 给“小白”漫画+图示讲解MyBatis原理,就问香不香!
- webClientTest 编写单元测试类
- 关于gorm多表联合查询(left join)的小记
- UnicodeEncodeError: 'latin-1' codec can't encode character 'u2026' in position 30: ordinal not i...
- Oracle GoldenGate 19 Microservices完整高可用安装、配置与测试
- 爬虫小白:11.scrapy框架(六) _媒体管道
- R基于TCGA数据画生存曲线
- 爬虫小白:01-认识爬虫
- 04.BeautifulSoup使用
- 04.Xpath的使用