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方面的知识,了解一下。到这里这篇教程就结束了,下篇文章会给大家带来一样精彩的内容,喜欢的可以点个关注!!!
- 超级玛丽游戏
- POJ 3673 Cow Multiplication
- HDU 5144 NPY and shot(物理运动学+三分查找)
- 深度|Python股票数据分析
- HDU 2438 Turn the corner(三分查找)
- UVAlive 3708 Graveyard(最优化问题)
- HDU 1754 I Hate It(线段树之单点更新,区间最值)
- Selenium2+python自动化19-单选和复选框
- Uva 11300 Spreading the Wealth(递推,中位数)
- Uva 11729 Commando War (简单贪心)
- UVA 11292 Dragon of Loowater(简单贪心)
- Codeforces Beta Round #2 A,B,C
- 牛顿迭代法(Newton's Method)
- 最长递减子序列(nlogn)(个人模版)
- 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 数组属性和方法
- 关于友情链接或者其他外部链接的建议
- 总结Js方法工具类库,总有你需要的方法
- [docker]安装Mysql
- [Centos7]linux运行django项目报错no module named _ssl
- [Centos7]在非标准端口上运行SSH
- [Centos7]安装及配置bind(DNS服务)
- [Centos7.2]关于crontab报错
- [Centos7.2]关于升级python后防火墙无法启动
- [Centos7]关于限制IP通过ssh登陆
- Apache安装SSL证证书
- 打卡群刷题总结0717——不同路径 II
- [Centos7.2]Django挂载后台运行
- [Centos7+python3]IPy模块安装
- KVM实现分布式部署lamp并安装WordPress
- NumPy学的还不错?来试试这20题!