Python爬虫|爬取喜马拉雅音频

242 篇文章 10 订阅
216 篇文章 2 订阅

Python爬虫|爬取喜马拉雅音频

喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快、规模最大的在线移动音频分享平台。今晚分享突破障碍,探秘喜马拉雅的天籁之音,实现实时抓取,并保存到本地!
知识点:
开发环境:windows pycharm requests json

运行此段代码有惊喜

import tkinter as tk

window = tk.Tk()
c = b'\xe5\x8a\xa0\xe6\x89\xa3\xe6\x89\xa3\xe7\xbe\xa4:\xe5\x85\xab\xe4\xb9\x9d\xe4\xba\x94\xe4\xb8\x83\xe4\xb9\x9d\xe4\xb8\x83\xe4\xb8\x83\xe4\xba\x94\xe4\xb8\x80,\xe9\xa2\x86\xe5\x8f\x96Python\xe5\xad\xa6\xe4\xb9\xa0\xe8\xb5\x84\xe6\x96\x99,\xe4\xbb\xa5\xe5\x8f\x8a\xe6\x96\x87\xe7\xab\xa0\xe4\xbb\xa3\xe7\xa0\x81'

labal = tk.Label(
    window,
    text=c.decode('utf-8'),
    bg='pink',
    font=('微软雅黑', 15),
    width=50,
    height=20,
    wraplength=300,

)
labal.pack()
window.mainloop()

网络反爬技术
文件的操作
网络请求
数据的转换
数据类型的使用

在这里插入图片描述

  1. 首先导入requests库
    import requests

  2. 将上面获得的json数据转换成字典格式(需要导入json模块)
    import json

  3. 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]

在这里插入图片描述

  1. 将获得的数据保存在硬盘music中

在这里插入图片描述

img

鼠标左键点击左边栏的music文件夹,将其打开,右键随便一首歌曲,点击“show in explorer”即可打开音频文件。

在这里插入图片描述

注意事项
代码操作的顺序是1-9,完整顺序是1,6,4,2,3,5,7,8,9;
这是因为代码存在BUG 的时候要不断的添加删除项

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值