Python怎么爬取喜马拉雅音频数据
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"Python怎么爬取喜马拉雅音频数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python怎么爬取喜马拉雅音频数据"吧!项目目标爬取
千家信息网最后更新 2025年12月03日Python怎么爬取喜马拉雅音频数据
本篇内容主要讲解"Python怎么爬取喜马拉雅音频数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python怎么爬取喜马拉雅音频数据"吧!
项目目标
爬取喜马拉雅音频数据
受害者地址
https://www.ximalaya.com/
本文知识点:
1、系统分析网页性质
2、多层数据解析
3、海量音频数据保存
环境:
python 3.6
pycharm
requests
parsel
思路:(爬虫案例)
1.确定数据所在的链接地址(url)
2.通过代码发送url地址的请求
3.解析数据(要的, 筛选不要的)
4.数据持久化(保存)
案例思路:
1. 在静态数据中获取音频的id值
2. 发送指定id值json数据请求(src)
3. 从json数据中解析音频所对应的URL地址
开始写代码
先导入所需的模块
import requestsimport parsel # 数据解析模块import re
1.确定数据所在的链接地址(url) 逆向分析 网页性质(静态网页/动态网页)
打开开发者工具,播放一个音频,在Madie里面可以找到一个数据包
复制URL,搜索
继续搜索,找到请求头参数
url = 'https://www.ximalaya.com/youshengshu/4256765/p{}/'.format(page)headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}2.通过代码发送url地址的请求
response = requests.get(url=url, headers=headers)html_data = response.text
3.解析数据(要的, 筛选不要的) 解析音频的 id值
selector = parsel.Selector(html_data)lis = selector.xpath('//div[@class="sound-list _is"]/ul/li')for li in lis: try: title = li.xpath('.//a/@title').get() + '.m4a' href = li.xpath('.//a/@href').get() # print(title, href) m4a_id = href.split('/')[-1] # print(href, m4a_id) # 发送指定id值json数据请求(src) json_url = 'https://www.ximalaya.com/revision/play/v1/audio?id={}&ptype=1'.format(m4a_id) json_data = requests.get(url=json_url, headers=headers).json() # print(json_data) # 提取音频地址 m4a_url = json_data['data']['src'] # print(m4a_url) # 请求音频数据 m4a_data = requests.get(url=m4a_url, headers=headers).content new_title = change_title(title)4.数据持久化(保存)
with open('video\\' + new_title, mode='wb') as f: f.write(m4a_data) print('保存完成:', title)最后还要处理文件名非法字符
def change_title(title): pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]") # '/ \ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替换为下划线 return new_title
完整代码
import reimport requestsimport parsel # 数据解析模块def change_title(title): """处理文件名非法字符的方法""" pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]") # '/ \ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替换为下划线 return new_titlefor page in range(13, 33): print('---------------正在爬取第{}页的数据----------------'.format(page)) # 1.确定数据所在的链接地址(url) 逆向分析 网页性质(静态网页/动态网页) url = 'https://www.ximalaya.com/youshengshu/4256765/p{}/'.format(page) headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'} # 2.通过代码发送url地址的请求 response = requests.get(url=url, headers=headers) html_data = response.text # print(html_data) # 3.解析数据(要的, 筛选不要的) 解析音频的 id值 selector = parsel.Selector(html_data) lis = selector.xpath('//div[@class="sound-list _is"]/ul/li') for li in lis: try: title = li.xpath('.//a/@title').get() + '.m4a' href = li.xpath('.//a/@href').get() # print(title, href) m4a_id = href.split('/')[-1] # print(href, m4a_id) # 发送指定id值json数据请求(src) json_url = 'https://www.ximalaya.com/revision/play/v1/audio?id={}&ptype=1'.format(m4a_id) json_data = requests.get(url=json_url, headers=headers).json() # print(json_data) # 提取音频地址 m4a_url = json_data['data']['src'] # print(m4a_url) # 请求音频数据 m4a_data = requests.get(url=m4a_url, headers=headers).content new_title = change_title(title) # print(new_title) # 4.数据持久化(保存) with open('video\\' + new_title, mode='wb') as f: f.write(m4a_data) print('保存完成:', title) except: pass运行代码,效果如下图
到此,相信大家对"Python怎么爬取喜马拉雅音频数据"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
数据
音频
地址
网页
代码
喜马拉雅
性质
所在
模块
链接
静态
分析
下划线
内容
动态
字符
思路
文件
文件名
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安卓数据库导出为excel
国家网络安全宣传周视频材料
2022 服务器cpu
bim软件开发有哪些
警惕网络安全班会记录
怎么看服务器是否装了数据
贵州企业软件开发公司
逃亡神庙是用哪个软件开发
网络安全架构实验
原神为什么经常重新连接服务器
js调用数据库数据分先后
qt实时数据存入数据库
天芯互联网联科技有限公司
数据库中怎么查找这个表
屏幕共享软件开发哪儿好
江阴电话软件开发代理品牌
mysql数据库的配置安装
vue从数据库中读取数据
student数据库关系
江浦游戏软件开发
盘立方交易服务器文件
msc季中杯服务器
服务器邮箱架设
网络安全群主责任状
小型 服务器
网络安全领域的认证
现在采用什么数据库系统
前沿网络技术5000字报告
云南农信服务器登录
网络安全的十大风险