Python怎么爬取喜马拉雅音频数据
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,本篇内容主要讲解"Python怎么爬取喜马拉雅音频数据",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python怎么爬取喜马拉雅音频数据"吧!项目目标爬取
千家信息网最后更新 2024年10月17日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安全错误
数据库的锁怎样保障安全
乡镇网络安全自查方案
北科院网络安全培训
物联网与网络技术论文
服务器被攻击如何恢复
mssql 演示数据库
聊天赚钱软件开发
信息网络安全三个时代划分为
服务器操作日志
360服务器异常
成都软件开发就业前景交流
2021年网络安全公司营收
尚品网络安全吗
网络安全法大学生讨论
acle数据库查询
数据库的api怎么写
h2数据库栏名
南京运营软件开发预算
软件开发 结构化面试
国外回国代理服务器
天津定制软件开发规定
欧瑞服务器显示AL01
服务器带多少千瓦
恩平领新科技互联网公司
linux连接ssh远程服务器
军事网络安全知识竞赛题库
网络安全黑客照片
最强nba服务器是国内的吗
手机管理linux服务器
安装不同版本数据库
初中网络安全教育讲稿