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安全错误
数据库的锁怎样保障安全
数据库如何保存图片文件
违反网络安全法 网络运营者
软件开发有几方面
老头环服务器无法登录
派出所网络安全管理职位累吗
梦幻同个服务器改区要多少钱
高职学生网络安全调查报告
服务器买表
数据库连接不正确
网络安全国际新闻
IBM服务器 装系统
河北app开发软件开发
华为官网网络技术400
报表连接mysql数据库
高防云服务器价格
数值计算软件开发
征求网络安全
数字营销中的网络安全
国外网络安全硕士申请
数据库日志 重做回滚怎么看
ceic数据库账号
华南理工网络安全考研
方舟生存服务器为什么进不去
上海企业网络技术服务报价
绿盟科技工业互联网核心
巨人通力电梯清故障用服务器吗
江门服务器机柜定制厂家
蜘点网络技术总监
软件开发的实用性
晨星软件开发岗笔试