Python爬虫:爬取喜马拉雅音频数据详解
前言
喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢?
今天带大家爬取喜马拉雅音频数据,一起期待吧!!
项目目标
爬取喜马拉雅音频数据
受害者地址
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 requests import parsel # 数据解析模块 import re
1.确定数据所在的链接地址(url) 逆向分析 网页性质(静态网页/动态网页)
打开开发者工具,播放一个音频,在Madie里面可以找到一个数据包
复制URL,搜索
找到ID值
继续搜索,找到请求头参数
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).contentnew_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 requests import 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).contentnew_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学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!
Python爬虫:爬取喜马拉雅音频数据详解相关推荐
- python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解
这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...
- python爬取app中的音频_Python爬取喜马拉雅音频数据详解
码农公社 210.net.cn 210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Python爬取喜马拉雅音频数据详解 一.项目目标 爬取喜马拉雅音频数据 受害 ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- python喜马拉雅_Python爬虫实战案例:取喜马拉雅音频数据详解!
前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...
- Python爬虫实战案例:取喜马拉雅音频数据详解
前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...
- python录音详解_Python爬虫实战案例:取喜马拉雅音频数据详解
前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...
- php抓取微博评论,python爬虫爬取微博评论案例详解
前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中,我负责的是数据爬取这块,我主要是把对于杨超越 的每一条评论的相关信息. 数据格式:{"name" ...
- Python爬虫爬取微博评论案例详解
文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中 ...
- python爬虫 爬取有道翻译详解
这里我们使用python的urllib来实现 首先,我们需要找到我们进行翻译时上传给服务器的数据. 我们可以通过查找审查元素中的Network这一栏目下,选择执行Post方法的选项. 在General ...
最新文章
- 程序员学历低,该被歧视吗? | 每日趣闻
- ios 获取最后一个cell_关于ios:向UICollectionView的第一个和最后一个单元格添加填充...
- vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
- 投入10个亿,每人奖300万,腾讯给科学界发奖了!
- Tensorflow报错:AttributeError: 'module' object has no attribute 'scalar_summary'
- 单变量和多变量财务预警模型_SPSS数据分析,基于判别分析上市公司财务危机预警分析...
- php文件统计源码,php统计文件中的代码行数
- 常熟理工C语言试卷带答案,常熟理工学院 C语言 考试样卷.doc
- android textview 动态高度自适应,TextView自适应高度(解决_UITextContainerView布局问题)...
- axis2 webservice客户端最少jar
- python窗口截图快捷键_windows下实现快捷键截图小工具
- android Alarm闹钟发送广播播放音乐,android适配问题
- OpenSSL环境搭建(WIN10+VS2017)
- 示波器常用的13个概念
- Vue 中 props 传值,父组件向子组件传递对象/数组可以直接修改的问题
- 贵州杰赛s65机顶盒子CPU S905M-B 刷机教程及纯尽版固件
- 2020笔记本性价比之王_2020十大笔记本电脑性价比排行(最新笔记本电脑推荐)...
- 挺着肚皮的小淘气 蒙语版铃声 挺着肚皮的小淘气 蒙语版手机铃...
- 暴风影音官网、App 挂了​!老板被捕,高管全辞职,员工:以后工作向谁汇报?...
- mysql数据库连接失败_mysql数据库连接失败问题排查