前言

喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,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爬虫:爬取喜马拉雅音频数据详解相关推荐

  1. python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解

    这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...

  2. python爬取app中的音频_Python爬取喜马拉雅音频数据详解

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Python爬取喜马拉雅音频数据详解 一.项目目标 爬取喜马拉雅音频数据 受害 ...

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

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  4. python喜马拉雅_Python爬虫实战案例:取喜马拉雅音频数据详解!

    前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...

  5. Python爬虫实战案例:取喜马拉雅音频数据详解

    前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...

  6. python录音详解_Python爬虫实战案例:取喜马拉雅音频数据详解

    前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...

  7. php抓取微博评论,python爬虫爬取微博评论案例详解

    前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中,我负责的是数据爬取这块,我主要是把对于杨超越 的每一条评论的相关信息. 数据格式:{"name" ...

  8. Python爬虫爬取微博评论案例详解

    文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 前几天,杨超越编程大赛火了,大家都在报名参加,而我也是其中的一员. 在我们的项目中 ...

  9. python爬虫 爬取有道翻译详解

    这里我们使用python的urllib来实现 首先,我们需要找到我们进行翻译时上传给服务器的数据. 我们可以通过查找审查元素中的Network这一栏目下,选择执行Post方法的选项. 在General ...

最新文章

  1. 程序员学历低,该被歧视吗? | 每日趣闻
  2. ios 获取最后一个cell_关于ios:向UICollectionView的第一个和最后一个单元格添加填充...
  3. vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
  4. 投入10个亿,每人奖300万,腾讯给科学界发奖了!
  5. Tensorflow报错:AttributeError: 'module' object has no attribute 'scalar_summary'
  6. 单变量和多变量财务预警模型_SPSS数据分析,基于判别分析上市公司财务危机预警分析...
  7. php文件统计源码,php统计文件中的代码行数
  8. 常熟理工C语言试卷带答案,常熟理工学院 C语言 考试样卷.doc
  9. android textview 动态高度自适应,TextView自适应高度(解决_UITextContainerView布局问题)...
  10. axis2 webservice客户端最少jar
  11. python窗口截图快捷键_windows下实现快捷键截图小工具
  12. android Alarm闹钟发送广播播放音乐,android适配问题
  13. OpenSSL环境搭建(WIN10+VS2017)
  14. 示波器常用的13个概念
  15. Vue 中 props 传值,父组件向子组件传递对象/数组可以直接修改的问题
  16. 贵州杰赛s65机顶盒子CPU S905M-B 刷机教程及纯尽版固件
  17. 2020笔记本性价比之王_2020十大笔记本电脑性价比排行(最新笔记本电脑推荐)...
  18. 挺着肚皮的小淘气 蒙语版铃声 挺着肚皮的小淘气 蒙语版手机铃...
  19. 暴风影音官网、App 挂了​!老板被捕,高管全辞职,员工:以后工作向谁汇报?...
  20. mysql数据库连接失败_mysql数据库连接失败问题排查

热门文章

  1. 基于51单片机的篮球记分牌设计
  2. 4k纸是几厘米乘几厘米_4k纸有多大长多少宽多少
  3. 七夕表白之Python画玫瑰花
  4. 统计学三种相关系数【pearson、spearman、kendall】
  5. MVP衣明志——15年技术生涯
  6. 一口气带你学会Redis升级后的几种数据类型,效率daydayup
  7. Android UI线程
  8. NetSuite 设置库存盘点
  9. 黑龙江省大庆市谷歌高清卫星地图下载
  10. U8固定资产最重要的数据表