前言

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

今天带大家爬取喜马拉雅音频数据,一起期待吧!!

这个案例的视频地址在这里

https://v.douyu.com/show/a2JEMJj3e3mMNxml

项目目标

爬取喜马拉雅音频数据

受害者地址

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).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 re

import requests

import parsel # 数据解析模块

def change_title(title):

"""处理文件名非法字符的方法"""

pattern = re.compile(r"[\/\\\:\*\?\"\\|]") # '/ \ : * ? " < > |'

new_title = re.sub(pattern, "_", title) # 替换为下划线

return new_title

for 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

运行代码,效果如下图

本文同步分享在 博客“松鼠爱吃饼干”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

python录音详解_Python爬虫实战案例:取喜马拉雅音频数据详解相关推荐

  1. Python爬虫:爬取喜马拉雅音频数据详解

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

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

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

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

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

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

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

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

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

  6. python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...

    个人希望,通过这个完整的爬虫案例(预计总共4篇短文),能够让爬虫小白学会怎么做爬虫的开发,所以在高手们看来,会有很多浅显的废话,如果觉得啰嗦,可以跳过一些内容~ 上一篇文章给大家简单介绍了Python ...

  7. python爬取历史天气查询_Python爬虫实战-爬取历史天气数据

    最近项目需要对合肥市历史天气数据进行爬取,分析了几个天气数据网站,最终选择天气后报网站. 将实现过程遇到的问题以及下来,供以后参考. 步骤分析 这里我使用的是Python中的requests库Beau ...

  8. Python采集喜马拉雅音频数据详解

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

  9. node 爬虫 实战 - 爬取拉勾网职位数据

    node 爬虫 实战 - 爬取拉勾网职位数据,主要想把数据用于大数据学习,到时候大数据分析可以自己分析一下职位的情况,和比较一些我现在的职位在深圳乃至全国的开发人员水平. 涉及到的技术栈:node.j ...

最新文章

  1. Node2Vec:万物皆可Embedding
  2. 【采用】知识图谱简介及风控应用场景
  3. sql语句转化为分页查询的一种实现
  4. “我工作八年,换了四家小公司,今后的职业生涯该怎么走?”
  5. c++电费管理系统_能耗管理系统
  6. Storm精华问答 | Storm的配置需要注意什么问题?
  7. idea导入gitlab上面的项目
  8. 运行报错:java.io.IOException: invalid constant type: 15
  9. JVM优化系列-常用GC参数总结
  10. 存数组元素的个数_HashMap1.8之后为什么要采用数组+链表+红黑树的储存方式?
  11. Spring WebFlux 要革了谁的命?
  12. MATLAB+simulink仿真学习
  13. java 正则 连续换行_Java正则表达式匹配回车换行多行
  14. 批量反编译class
  15. Oracle全局临时表和私有临时表
  16. 黑苹果安装教程---联想G480安装懒人版10.9.5
  17. GEE|影像可视化|导出分类结果图像
  18. 25万美金奖励章鱼加速器2022冬季获胜团队!
  19. Mac 上使用 SAS 的 2 种方法
  20. web application与web site

热门文章

  1. echarts折线图设置横向基准线/水平线
  2. 微信内置浏览器无法使用input图片上传和lrz.bundle.js图片压缩插件
  3. 北京理工大学本科毕业论文答辩和论文选题PPT模板
  4. 阿里云搭建自己的anki服务器
  5. 腾讯文档导出Excel文档显示‘文件已损坏,无法打开‘解决方法
  6. 彻底理解傅里叶变换(上)
  7. 计算机录音机应用程序在哪,win10电脑自带录音在哪里打开
  8. Chrome浏览器保存微信公众号文章中的图片
  9. hifiasm对HiFi PacBio进行组装
  10. 在GATE中用ICTCLAS处理多个文档