爬虫爬取mp3文件例子

news2024/9/27 19:18:57

相信训练模型时数据集的获取也是一个很头疼的事情,搞cv领域的可以扛着摄像头架起三脚架拍摄获取(以前干过),但是如果是nlp领域的呢,特别是chatgpt等大模型出来后对这类文本等数据的需求更大,如果没有现成的数据集的话基本上很难自己创造数据,所以爬取视为其中一个手段获取数据(但是提醒一下要合法获取数据哦)。
那么下面就以简单的批量获取mp3文件为例。

假设我们要获取网易云飙升榜的所有音乐文件:
在这里插入图片描述
地址为:https://music.163.com/#/discover/toplist?id=19723756
首先f12打开开发者工具:
在这里插入图片描述
选择network,然后根据歌曲名复制到搜索框,然后点击清理按键清理所有的请求信息。
然后点击刷新页面,可以看到出现了很多新的请求信息,这里打开抓包再开始请求是因为刚才的请求信息可能是有延迟的请求信息,并不全,这里重新获取的比较全面。
在这里插入图片描述
在左边搜索框搜索出来的点击就可以看到定位到的位置,在li标签的a标签里面,接下来我们先查看请求信息get获取一下信息打印出来看看:
在这里插入图片描述
在这里插入图片描述

选择headers,要获取两个信息,一个是url,一个是request headers底下的user agent。复制这两个信息开始下面的代码:

import requests   
import re   # 正则表达式的库

url = "https://music.163.com/discover/toplist?id=19723756"
headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
response = requests.get(url=url, headers=headers)
print(response.text)

在这里插入图片描述
运行后打印出获取到的信息,接下来开始从中提取想要的内容,ctrl f定位到歌名可以看到是包裹在li标签中,因为我们想要下载的是mp3格式的文件,看到mp3的下载地址的组成包括id,而id就是和歌名一一对应的,所以我们for循环获取每个歌名及id来下载对应的mp3文件:
我们先拿这个“双星”举例,他的组成是这样的:<li><a href="/song?id=2068206782">双星</a></li>,所以我们可以用正则表达式来通用表示所有的歌名的标签组成:<li><a href="/song\?id=(\d+)">(.*?)</a>,代码如下:

html_data = re.findall('<li><a href="/song\?id=(\d+)">(.*?)</a>', response.text)
# print(html_data)
for num_id, title in html_data:
    music_url = f"http://music.163.com/song/media/outer/url?id={num_id}.mp3"  # mp3文件地址
    music_content = requests.get(url=music_url, headers=headers).content
    with open("/home/alpha/桌面/results/" + title + ".mp3", mode="wb") as f:   # 下载每个mp3文件
        f.write(music_content)
    print(num_id, title)

运行结果:
在这里插入图片描述
这样就爬取下当前页面下全部的mp3文件了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/985074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攻防世界-WEB-Web_php_include

打开靶机 通过代码审计可以知道&#xff0c;存在文件包含漏洞&#xff0c;并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下&#xff1a; 这两个都为on 所以我们就可以使用data://伪协议 payload如下&#xff1a; - ?pagedata://text/plain,…

测试可用的淘宝API(商品详情数据、买家信息、卖家信息、店铺信息、订单信息)

什么是API? API全称Application Programming Interface&#xff0c;即应用程序编程接口&#xff0c;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定&#xff0c;用于传输数据和指令&#xff0c;使应用程序之间可以集成和共享数据资源。 简单来说&#…

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

数据库管理系统&#xff08;数据库软件&#xff09;功能非常多&#xff0c;不仅仅是存储数据&#xff0c;还要包含&#xff1a;数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言&#xff0c;基于功能&#xff0c;划分为4类&#xff1a; 1、数据定…

64位Office API声明语句第110讲

【分享成果&#xff0c;随喜正能量】以大慈为所住&#xff0c;给一切众生快乐&#xff0c;观众生心与菩萨心平等平等。以大悲为住处&#xff0c;不轻末学&#xff0c;善根成熟了他会发心&#xff0c;将来也能成佛。舍有为而不执著无为&#xff0c;住无为而不舍有为&#xff0c;…

正方实践系统打卡

Use HTTP (已完成) &#x1f4dc; 使用指南 &#x1f6d6; 项目结构 log 日志文件 use 使用情况 (待) data.py 数据 log.py 日志 main.py 主函数 只需要修改data.py文件内容即可&#xff1a; header ——> 头文件 User-AgentCookieAccept user ——> 用户信息 ZFT…

Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录 一、消费者组详细消费流程图解二、消费者的重要参数 一、消费者组详细消费流程图解 创建一个消费者网络连接客户端&#xff0c;主要用于与kafka集群进行交互&#xff0c;如下图所示&#xff1a; 调用sendFetches发送消费请求&#xff0c;如下图所示&#xff1a; (1)、Fet…

RabbitMQ: Routing结构

生产者 package com.qf.mq2302.routing;import com.qf.mq2302.utils.MQUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;public class EmitLog {public static final String EXCHANGE_NAME"emitlogs";public static void main(…

基于Jmeter和Jenkins搭建性能测试框架

搭建这个性能测试框架是希望能够让每个人&#xff08;开发人员、测试人员&#xff09;都能快速的进行性能测试&#xff0c;而不需要关注性能测试环境搭建过程。因为&#xff0c;往往配置一个性能环境可能需要很长的时间。 1、性能测试流程 该性能测试框架工作的流程主要有&am…

【代码随想录】dfs和bfs (所有可能的路径、岛屿数量)

所有可能的路径&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution { public:vector<int> path;vector<vector<int>> result;void dfs(vector<vector<int>> graph, int x){//1 确认递归函数…

Java日志框架的扛把子 - SLF4J - SLF4J的原理和实践

1. Java世界中的日志框架 Java世界中的日志框架 其中&#xff0c;slf4j和jcl属于门面日志框架&#xff0c;而其它的几个则是真正干活的ddidic底层日志框架。冷知识&#xff1a;其中标红的日志框架&#xff0c;它们的作者是同一人。不同的日志框架&#xff0c;API接口往往也不一…

解锁前端Vue3宝藏级资料 第一章 带你深入了解Vue3项目创建 2 (使用 Webpack 5 搭建 vue项目)

在之前的文章中&#xff0c;我们已经了解了如何使用Vue CLI来创建Vue项目的开发环境。现在&#xff0c;大家已经可以轻松地运用Vue CLI来构建自己的Vue项目了。然而&#xff0c;你可能仍然对背后的工作原理感到困惑。接下来&#xff0c;我将引导你们在不使用Vue CLI的情况下&am…

Python超入门(1)__迅速上手操作掌握Python

# 1.第一个代码&#xff1a;输出语句 # 1.第一个代码&#xff1a;输出语句 print("My dogs name is Huppy!") print(o----) print( ||| ) print("*" * 10) """ 输出结果&#xff1a; My dogs name is Huppy! o----||| ********** "&…

私有化部署即时通讯平台,完美替代飞书和钉钉的SaaS系统

在当今快速发展的数字化时代&#xff0c;企业对于安全、灵活、可定制的即时通讯平台需求不断增长。作为一家领先的品牌&#xff0c;WorkPlus专注于提供私有化部署的即时通讯平台&#xff0c;完美替代飞书和钉钉的SaaS系统。本文将重点介绍WorkPlus如何通过创新的解决方案&#…

2023高教社杯数学建模B题思路分析 - 多波束测线问题

# 1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播&#xff0c; 在不同界面上产生反射&#xff0c; 利用这一原理&#xff0c;从测量船换能器垂直向海底发射声波信 号&#xff0c;并记录从声波发射到…

【MATLAB第72期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入多输出回归预测模型

【MATLAB第72期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入多输出回归预测模型 一、学习资料 (LGBM)是一种基于梯度增强决策树(GBDT)算法。 往期研究了多输入单输出回归预测方法&#xff0c;本次研究多输入多输出回归预测。 参考链接&#xff1a; lightgbm原理参考链…

高德地图API使用教程

高德地图API使用教程 开发前准备获取key值和相关安全密钥 简单使用需求开发h5范围打卡-vue3地图选点-vue3 开发前准备 获取key值和相关安全密钥 进入高德开放平台 https://lbs.amap.com/ 登录后&#xff0c;打开我的应用&#xff08;无账号要先注册&#xff09; 打开我的应用…

3dsmax 蒙皮替换骨架

需求 本文描述部分来源于 TAZORN&#xff0c;最后附上Python实现 保留蒙皮信息&#xff0c;将骨骼替换成新的骨架模型M上的Skin目前指定的是骨架A&#xff0c;在蒙皮信息不变的情况 下更换成骨架B 替换的操作需要用到 SkinUtilities 工具 手动进行骨骼替换的方法 Snapshot原…

maven打包时显示无效jdk版本

1、配置当前项目所需的Jdk版本 2、与当前项目指定的jdk版本相同 3、与当前项目指定的jdk版本相同 4、与当前项目指定的jdk版本相同 5、指定主项目启动时的vm配置与当前项目所需版本相同

手写Spring:第18章-数据类型转换工厂设计实现

文章目录 一、目标&#xff1a;数据类型转换工厂二、设计&#xff1a;数据类型转换工厂三、实现&#xff1a;数据类型转换工厂3.1 工程结构3.2 数据类型转换工厂类图3.3 定义类型转换接口3.3.1 类型转换处理接口3.3.2 类型转换工厂3.3.3 通用类型转换接口3.3.4 类型转换注册接口…

共筑安全防线|与安全狗相约2023年国家网络安全宣传周

在《关于网络安全和信息化工作重要指示》里 “坚持筑牢国家网络安全屏障”被提及 网络安全的重要性再次被重申 实际上 在“十四五”数字经济发展规划及“二十大”上 网络安全也被多次强调 “网络安全”不再简单停留在字面意思上 它成为囊括 你我个人隐私安全、信息安全 …