技术文摘
python爬虫获取的歌曲如何保存
2025-01-09 04:37:36 小编
python爬虫获取的歌曲如何保存
在利用Python爬虫获取到歌曲后,如何将其妥善保存是许多开发者关心的问题。下面将详细介绍几种常见的保存方式。
以文件形式保存
二进制写入文件
当通过爬虫获取到歌曲的二进制数据后,可以使用Python的内置open()函数以二进制写入模式('wb')打开一个文件,然后将数据写入该文件。例如:
import requests
url = "歌曲的真实链接"
response = requests.get(url)
if response.status_code == 200:
with open('song.mp3', 'wb') as f:
f.write(response.content)
这段代码中,首先使用requests库发送请求获取歌曲数据,若请求成功,通过open()函数创建名为song.mp3的文件,并将响应内容写入其中。
分块写入
对于较大的歌曲文件,为避免内存占用过大,可以采用分块写入的方式。代码如下:
import requests
url = "歌曲链接"
response = requests.get(url, stream=True)
if response.status_code == 200:
with open('big_song.mp3', 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
stream=True参数使requests库以流的形式获取数据,iter_content()方法按指定块大小迭代读取数据,再逐块写入文件。
保存到数据库
SQLite数据库
如果希望将歌曲信息及数据整合管理,可以保存到数据库。以SQLite为例:
import sqlite3
import requests
url = "歌曲链接"
response = requests.get(url)
song_data = response.content
conn = sqlite3.connect('songs.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS songs (id INTEGER PRIMARY KEY, title TEXT, data BLOB)')
cursor.execute('INSERT INTO songs (title, data) VALUES (?,?)', ('示例歌曲', song_data))
conn.commit()
conn.close()
上述代码创建了一个SQLite数据库及表,将歌曲数据作为二进制大对象(BLOB)插入表中。
MySQL数据库
使用MySQL数据库保存歌曲数据,需先安装mysql - connector - python库:
import mysql.connector
import requests
url = "歌曲链接"
response = requests.get(url)
song_data = response.content
mydb = mysql.connector.connect(
host="localhost",
user="用户名",
password="密码",
database="数据库名"
)
mycursor = mydb.cursor()
sql = "INSERT INTO songs (title, data) VALUES (%s, %s)"
val = ("示例歌曲", song_data)
mycursor.execute(sql, val)
mydb.commit()
mydb.close()
通过这些方法,无论是以传统文件形式保存,还是整合到数据库中管理,都能实现Python爬虫获取歌曲后的有效存储,满足不同的应用需求。
- 全栈 Web 项目快速生成推荐
- StringBuffer 与 StringBuilder 的三个差异
- 泛型与元编程的模型:Java、Go、Rust、Swift、D 等
- Java 基础之 While 循环入门
- 前端实现短视频 App 滑动切换的手把手教程
- 学会 JavaScript json 解析,一篇文章就够
- 深入解读并发编程中的 Synchronized
- 大整数乘法运算与分治算法的简易指南
- 全栈、均栈、MERN 栈,谁是下一代 Web 项目的理想之选?
- Go 语言 11 岁,未来走向及现状探究
- 教妹学 Java:流程控制语句全解析 12 图呈现
- JPA 与 Mybatis 同时运用:鱼和熊掌皆可得
- 告别 Navicat!用它即可操作所有数据库
- 从 SOA 治理至微服务治理:整体框架构建的重新思考
- 华为凤凰引擎:自 GT 迈向 RT