14 存储数据之存储为数据库

在爬取数据后,接下来的步骤就是将数据保存到合适的存储形式,其中一种常见的方式就是将数据存储到数据库。相较于将数据存储为CSV文件,数据库具有更强的查询能力和数据管理特点,尤其在处理大规模数据时,它的优势表现得尤为明显。

数据库的选择

在本文中,我们将使用 SQLite 作为示例数据库,因为它轻量级、易于使用上手,不需要复杂的安装过程,非常适合爬虫小白进行学习和实践。如果你爬取的数据量较大或需要支持并发操作,可以考虑 MySQL 或者 PostgreSQL 等数据库。

安装与准备

要使用 SQLite,你只需要 Python 的内置库 sqlite3。你可以用以下命令来检查 Python 是否已经包含此模块:

1
python -c "import sqlite3"

如果没有错误信息,那么你就可以开始使用它了。

创建数据库和表

首先,我们需要创建一个数据库文件,并在其中建立一个存储数据的表。以下是一个简单的示例,展示了如何创建数据库和表。

示例:创建数据库与表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sqlite3

# 连接到 SQLite 数据库(如果数据库不存在,则会创建一个)
conn = sqlite3.connect('data.db')

# 创建一个游标对象
cursor = conn.cursor()

# 创建一个表,假设我们爬取的是书籍信息
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
author TEXT NOT NULL,
publish_year INTEGER
)
''')

# 提交事务
conn.commit()

# 关闭连接
conn.close()

插入数据

创建好表结构后,我们可以将爬取的数据插入到数据库中。可以通过 INSERT 语句将数据添加到表中。

示例:插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sqlite3

# 假设我们爬取的书籍数据
books_data = [
('《Python编程:从入门到实践》', 'Eric Matthes', 2019),
('《流畅的Python》', 'Luciano Ramalho', 2015),
('《深入理解计算机系统》', 'Randal E. Bryant', 2015)
]

# 连接到数据库
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 插入数据
cursor.executemany('''
INSERT INTO books (title, author, publish_year)
VALUES (?, ?, ?)
''', books_data)

# 提交事务
conn.commit()

# 关闭连接
conn.close()

在这个示例中,我们使用 executemany 方法批量插入数据。利用 ? 占位符来避免 SQL 注入,是个好的实践。

查询数据

数据存储进数据库后,你可能需要查询它。你可以使用 SELECT 语句来获取所需信息。

示例:查询数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sqlite3

# 连接到数据库
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 查询所有书籍
cursor.execute('SELECT * FROM books')
rows = cursor.fetchall()

# 输出结果
for row in rows:
print(row)

# 关闭连接
conn.close()

该代码将查询出表中所有的书籍记录,并逐行打印出来。

总结

到此为止,我们已经学习了如何将数据存储到数据库中,包括创建数据库、创建表、插入数据以及查询数据。数据库的使用使得数据存储更加灵活和高效,能够更方便地进行数据操作与管理。

在下一篇教程中,我们将讨论如何将数据存储为文件格式,继续拓展我们在数据存储方面的知识。希望大家在数据库的应用上能有更深入的实践与理解。

14 存储数据之存储为数据库

https://zglg.work/crawler-zero/14/

作者

IT教程网(郭震)

发布于

2024-08-11

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论