

◾ 编程语言:.NET/Java/Python/Go/Node...
◾ 移动生态:HarmonyOS/iOS/Android/小程序
◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙
◾ 游戏开发:Unity3D引擎深度解析
在网络爬虫的世界中,数据的存储与管理是成功的关键环节。随着爬虫技术的不断发展,抓取的数据量也日益增大,如何高效、可靠地存储这些数据成为了开发者必须面对的挑战。MySQL数据库,作为一种广泛使用的关系型数据库,以其强大的数据管理能力和灵活的查询功能,成为了爬虫项目中最受欢迎的选择之一。
我们将深入探讨如何在网络爬虫中使用MySQL数据库。我们将从MySQL的基本概念入手,逐步引导你了解如何在Python中连接和操作MySQL数据库,包括创建数据库、设计数据表、插入和查询数据等实用技巧。通过具体的示例,你将掌握如何将抓取到的数据高效地存储到MySQL中,并能够灵活地进行数据查询和分析。
步骤说明:
import pymysql 验证是否成功。 
核心步骤与代码示例:
import pymysql
# 打开数据库连接(参数顺序:主机/IP、用户名、密码、数据库名)
db = pymysql.connect(
host="localhost",
user="root",
password="root",
database="mrsoft"
)
# 创建游标对象
cursor = db.cursor()
# 执行 SQL 查询(获取数据库版本)
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print("Database version: %s" % data)
# 关闭连接
db.close() 注意事项:
connect() 参数需与本地 MySQL 配置一致(如用户名、密码、数据库名)。 close() 释放资源。 
SQL 语句与代码实现:
DROP TABLE IF EXISTS books; CREATE TABLE books (
id INT(8) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
category VARCHAR(50) NOT NULL,
price DECIMAL(10,2) DEFAULT NULL,
publish_time DATE DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; import pymysql
db = pymysql.connect(
host="localhost",
user="root",
password="root",
database="mrsoft"
)
cursor = db.cursor()
# 删除旧表
cursor.execute("DROP TABLE IF EXISTS books")
# 创建新表
sql = """
CREATE TABLE books (
id INT(8) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
category VARCHAR(50) NOT NULL,
price DECIMAL(10,2) DEFAULT NULL,
publish_time DATE DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
"""
cursor.execute(sql)
db.close() 关键点:
AUTO_INCREMENT 需正确拼写。 DECIMAL(10,2) 表示最多 10 位数字,其中 2 位小数。 CHARSET=utf8 支持中文字段。 
批量插入数据示例:
import pymysql
db = pymysql.connect(
host="localhost",
user="root",
password="root",
database="mrsoft",
charset="utf8" # 防止中文乱码
)
cursor = db.cursor()
# 数据列表(多组元组)
data = [
("零基础学 Python", "Python", 79.80, "2018-5-20"),
("Python 从入门到精通", "Python", 69.80, "2018-6-18"),
("零基础学 PHP", "PHP", 69.80, "2017-5-21"),
("PHP 项目开发实战入门", "PHP", 79.80, "2016-5-21"),
("零基础学 Java", "Java", 69.80, "2017-5-21")
]
try:
# 使用 executemany 批量插入
cursor.executemany(
"INSERT INTO books (name, category, price, publish_time) VALUES (%s, %s, %s, %s)",
data
)
db.commit() # 提交事务
except Exception as e:
print("插入失败:", e)
db.rollback() # 回滚事务
finally:
db.close() 
注意事项:
%s 占位符而非字符串拼接。 charset="utf8" 确保中文正确存储。 commit() 提交更改。 rollback() 回滚至操作前状态。 finally 中关闭连接。 WITH 语句自动管理连接(如 with db.cursor() as cursor)。 原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。