Python采集情感音频的实现示例
作者:极客飞虎 发布时间:2023-06-11 23:17:10
前言
我最近喜欢去听情感类的节目,比如说,婚姻类,我可能老了吧。我就想着怎么把音乐下载下来了,保存到手机上,方便我们业余时间去听。
发送请求
首先,我们要确定我们的目标网址,我们想要获取到每一个音频的地址。
我们发送请求,获取网页源代码。我们相信大家这里的代码都会写了。
url = 'https://www.ximalaya.com/album/37453303'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
}
res = requests.get(url,headers=headers)
requests
是 Python 的一个内置模块,用于发送 HTTP 请求。在这个例子中,我们使用 requests.get()
函数向 https://www.ximalaya.com/album/37453303
发送一个 GET 请求,并将请求头和响应体作为参数传递给函数。
获取数据
info_list = re.findall('"tracks":[(.*?)]', res.text)[1]
print(info_list)
子字符串列表中的第一个元素就是我们要找的 tracks
字符串。我们将其存储在 info_list
变量中,并使用 print()
函数输出。
我们发现,我们想要的数据,就在我们匹配的内容中。里面包含了每一个音乐的标题和其id,我们接下来把这个获取下来。
注意,这里,不是json数据,所以,我们只能正则去匹配。
解析数据
我们通过对比url发现,我们只需要拿到uid,就可以直接访问到音频。这里就不多解释。
audio = f'https://www.ximalaya.com/revision/play/v1/audio?id={trackId}&ptype=1'
我们只需要把trackID换掉,就可以了。请求上面的url,就可以拿到音频的地址。接下来,我们写代码。
for trackId, title in zip(trackIds, titles):
audio = f'https://www.ximalaya.com/revision/play/v1/audio?id={trackId}&ptype=1'
print(audio)
audio_res = requests.get(audio, headers=headers)
audio_url = audio_res.json()['data']['src']
print(audio_url)
zip()
函数用于将两个列表合并成一个列表。在这个例子中,我们使用 zip()
函数将 trackIds
和 titles
两个列表合并成一个列表,并将其存储在 trackIds
变量中。
然后,我们将 trackId
和 title
转换为字符串格式,并将其存储在 audio
变量中。
接下来,我们使用 requests.get()
函数向 audio
发送一个 GET 请求,并将请求头和响应体作为参数传递给函数。最后,我们使用 json()
方法将响应体中的 data
字段转换为 JSON 格式,并使用 ['data']['src']
取出了 src
属性,即 audio_url
的值,并将其存储在 audio_url
变量中。
保存数据
music_content = requests.get(audio_url, headers=headers).content
with open('music//' + f'{title}' + '.mp3', mode='wb') as filename:
filename.write(music_content)
print(title, '保存成功')
接下来,我们请求这个网页,保存二进制到本地。with open()
语句用于自动关闭文件,确保文件在使用完毕后被正确关闭。在这个例子中,我们使用 with open()
语句打开一个名为 music//
+ title
+ .mp3
的文件,并将其保存到变量filename
中。
然后,我们使用 write()
方法将音频内容写入文件中。
来源:https://juejin.cn/post/7224418285798408252


猜你喜欢
- 正在看的ORACLE教程是:Oracle数据安全面面观。
- 大家好,今天给大家分享一下明哥整理的一篇 Python 参数的内容,内容非常的干,全文通过案例的形式来理解知识点,自认为比网上 80% 的文
- 前言:如果使用进到的日志文件方法:logging.FileHandler,会导致日志信息全部存放在一个日志文件中,不利于后面对日志文件的使用
- 创建 var d=new Date(); 要注意的是在JavaScript中月份的值是从0到11(0表示1月)。 设置日期和时间值 设置日期
- 前言最近在整理我磁盘上的照片,发现不少猫照,突然觉得若能把这些猫照都挑出来,观察它们的成长轨迹也是一件不错的事情。一张一张的找实在是太费劲了
- 前言异步编程可以提高应用程序的性能和吞吐量,因为它可以充分利用 CPU 和 I/O 资源。当某个任务被阻塞时,事件循环可以切换到另一个任务,
- Python2.7还是一个比较稳定的版本,目前80%以上的公司都在使用python2.7的版本。他不会在安装的时候报编码错误之类的问题。但是
- 不管是上学还是上班都会统计考勤,有些学校或公司会对每月缺卡次数过多(比如三次以上)的人员进行处罚。有些公司还规定对于基层员工要在工作日提交日
- /** * @Purpose: Mysql数据库访问类 * @Package: * @Author: lisen@sellingclub.c
- 本文实例讲述了php实现搜索一维数组元素并删除二维数组对应元素的方法。分享给大家供大家参考。具体如下:定义一个一维数组一个二维数组如下$fr
- *注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改。文中提及的权限都是在原
- 解决anaconda打不开的问题,亲测成功!!彻底卸载四步骤1.找到anaconda的安装路径,删除envs文件和pkgs文件2.运行ana
- 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下:数据如下:>>>import
- 本文实例讲述了Python udp网络程序实现发送、接收数据功能。分享给大家供大家参考,具体如下:1. udp网络程序-发送数据创建一个基于
- 在我们平时的开发过程中,为了方便调试程序,我们都是打开开发者模式,即Debug=True,当我们正式上线的时候肯定就需要把开发者模式关掉,用
- 序言是我太久没发了吗?昨天没人看,那么今天来点特别的~不仅把好看的视频全部pa下来,咱们还要实现自动评论、点赞、关注三连~宝,你也可以顺手给
- 对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,你不需要像在Unix平台上那样执行 mysql_instal
- 在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!!有时候我们写程序的时候,会出现一
- 当存储一个CHAR值时, Mysql会除去尾随空间, 这个行为有点让人困惑, 用一个具体的例子来看一下: 首先 ,创建一个只有一个CHAR(
- 接触pandas之后感觉它的很多功能似乎跟numpy有一定的重复,尤其是各种运算。不过,简单的了解之后发现在数据管理上pandas有着更为丰