14 存储数据之存储为数据库
在爬取数据后,接下来的步骤就是将数据保存到合适的存储形式,其中一种常见的方式就是将数据存储到数据库。相较于将数据存储为CSV文件,数据库具有更强的查询能力和数据管理特点,尤其在处理大规模数据时,它的优势表现得尤为明显。
数据库的选择
在本文中,我们将使用 SQLite
作为示例数据库,因为它轻量级、易于使用上手,不需要复杂的安装过程,非常适合爬虫小白进行学习和实践。如果你爬取的数据量较大或需要支持并发操作,可以考虑 MySQL
或者 PostgreSQL
等数据库。
安装与准备
要使用 SQLite
,你只需要 Python 的内置库 sqlite3
。你可以用以下命令来检查 Python 是否已经包含此模块:
python -c "import sqlite3"
如果没有错误信息,那么你就可以开始使用它了。
创建数据库和表
首先,我们需要创建一个数据库文件,并在其中建立一个存储数据的表。以下是一个简单的示例,展示了如何创建数据库和表。
示例:创建数据库与表
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
语句将数据添加到表中。
示例:插入数据
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
语句来获取所需信息。
示例:查询数据
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()
该代码将查询出表中所有的书籍记录,并逐行打印出来。
总结
到此为止,我们已经学习了如何将数据存储到数据库中,包括创建数据库、创建表、插入数据以及查询数据。数据库的使用使得数据存储更加灵活和高效,能够更方便地进行数据操作与管理。
在下一篇教程中,我们将讨论如何将数据存储为文件格式,继续拓展我们在数据存储方面的知识。希望大家在数据库的应用上能有更深入的实践与理解。