"GOOD
喜马拉雅是知名的专业的音频分享平台, 用户规模突破 4.8 亿, 汇集了有声小说, 有声读物, 儿童睡前故事, 相声小品等数亿条音频, 成为国内发展最快, 规模最大的在线移动音频分享平台. 今晚分享突破障碍, 探秘喜马拉雅的天籁之音, 实现实时抓取, 并保存到本地!
知识点:
开发环境: Windows pycharm requests JSON
网络反爬技术
文件的操作
网络请求
数据的转换
数据类型的使用
1. 首先导入 requests 库
import requests
6. 将上面获得的 JSON 数据转换成字典格式(需要导入 JSON 模块)
import JSON
4. header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) ApplewebKit/537.36 (Khtml, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
这是应对反爬虫机制, 伪装成合法浏览器而添加, 本来复制过来的是 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 因 python 不识别 User-Agent, 所以将 User-Agent 用引号引起来, 同时将冒号后面的内容也用引号引起来即可, 这样就有了合法信息; 该信息的位置: 按 F12->Network->headers->RequestHeaders->User-Agent: Mozilla/5.0... 详见下图
2. 设置 url, 链接的获取方式:
打开喜马拉雅官网 ->点击 "轻音乐"->点击 "夜色钢琴曲"->选择一首歌后会出现播放按钮 (先不要点此按钮)-> 按 F12->点击 Network->点击播放按钮 ->此时调试窗口会弹出播放请求 ->点击 name 下的第一栏 album?....->点击右边栏 Headers->展开 General->复制 Request URL 下的网址 https://www.ximalaya.com/revision/play/album?albumId... 即可
url = "https://www.ximalaya.com/revision/play/album?albumId=291718&pageNum=1&sort=1&pageSize=30"
3 将获取的数据赋值给 response, 打印 response
- response = requests.get(url).text
- print(response)
结果未获取到数据, 因为网站做了反爬虫机制, 所以要在上面添加 header 伪装成合法身份
5. 因为上面添加了 header 变量, 所以应该把第 3 步替换为:
- response = requests.get(url,headers = header).text
- print(response)
添加 header 后, 重新运行获得了数据 (JSON 格式); 复制下面的获取的数据, 打开网址 http://www.bejson.com/, 在输入框中粘贴刚才的数据, 点击 "格式化校验" 即可辨别是什么格式的文件; JSON 类型为 str, 字典的类型为 dict; 它们的区别: d ={'name':'zs','gender':'man'} ===> 是字典类型; 而 s ='{'name':'zs','gender':'man'}' ===>是字符串类型, 是 JSON 格式的字符串
7. 转换后赋值给 audio_data(可在刚才判断类型的工具中查看一层一层的关系)
audio_data = JSON.loads(response)['data']['tracksAudioPlay']
8. 循环遍历链接及文件名
- for audio_info in audio_data:
- music_url = audio_info['src']
- music_name = music_url.split('/')[-1]
9. 将获得的数据保存在硬盘 music 中
鼠标左键点击左边栏的 music 文件夹, 将其打开, 右键随便一首歌曲, 点击 "show in explorer" 即可打开音频文件.
注意事项
代码操作的顺序是 1-9, 完整顺序是 1,6,4,2,3,5,7,8,9;
这是因为代码存在 BUG 的时候要不断的添加删除项
学的到东西的事情是锻炼, 学不到的是磨练, 所以我一直走在练的路上.
共享新方式
长按识别二维码, 关注我们
来源: http://www.bubuko.com/infodetail-3101123.html