首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 HTTP基本原理
1.2 Web 网页基础
1.3 爬虫的基本原理
1.4 Session和Cookie
1.5 代理的基本原理
1.6 多线程和多进程的基本原理
2.1 urllib的使用
2.2 requests的使用
2.3 正则表达式
2.4 httpx的使用
2.5 基础爬虫案例实战
3.1 XPath的使用
3.2 Beautiful Soup的使用
3.3 pyquery的使用
3.4 parsel 的使用
4.1 TXT 文本文件存储
4.2 JSON 文件存储
4.3 CSV 文件存储
4.4 MySQL 存储
4.5 MongoDB 文档存储
4.6 Redis缓存存储
4.7 Elasticsearch 搜索引擎存储
4.8 RabbitMQ 的使用
5.1 什么是 Ajax
5.2 Ajax分析方法
5.3 Ajax 分析与爬取实战
6.1 协程的基本原理
6.2 aiohttp的使用
6.3 aiohttp 异步爬取实战
7.1 Selenium 的使用
7.2 Splash 的使用
7.3 Pyppeteer 的使用
7.4 Playwright 的使用
7.5 Selenium 爬取实战
7.6 Pyppeteer 爬取实战
7.7 CSS 位置偏移反爬案例分析与爬取实战
7.8 字体反爬案例分析与爬取实战
8.1 使用 OCR 技术识别图形验证码
8.2 使用 OpenCV 识别滑动验证码的缺口
8.3 使用深度学习识别图形验证码
8.4 使用深度学习识别滑动验证码的缺口
8.5 使用打码平台识别验证码
8.6 手机验证码的自动化处理
9.1 代理的设置
9.2 代理池的维护
9.3 付费代理的使用
9.4 ADSL 拨号代理的搭建方法
9.5 代理反爬案例爬取实战
10.1 模拟登录的基本原理
10.2 基于Session和Cookie的模拟登录爬取实战
10.3 基于JWT的模拟登录爬取实战
10.4 大规模账号池的搭建
11.1 网站加密和混淆技术简介
11.2 浏览器调试常用技巧
11.3 JavaScript Hook 的使用
11.4 无限 debugger 的原理与绕过
11.5 使用 Python 模拟执行 JavaScript
11.6 使用 Node.js 模拟执行 JavaScript
11.7 浏览器环境下 JavaScript 的模拟执行
11.8 AST 技术简介
11.9 使用 AST 技术还原混淆代码
11.10 特殊混淆案例的还原
11.11 WebAssembly 案例分析和爬取实战
11.12 JavaScript 逆向技巧总结
11.13 JavaScript 逆向爬取实战
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(上)
小册名称:Python3网络爬虫开发实战(上)
### 4.4 MySQL 存储 在网络爬虫开发过程中,数据的存储是一个至关重要的环节。随着爬取数据的不断增加,如何高效地存储、查询和管理这些数据成为开发者必须面对的问题。MySQL作为关系型数据库管理系统(RDBMS)的佼佼者,因其稳定性、高效性和易用性,在网络爬虫项目中得到了广泛应用。本章将深入探讨如何在Python3网络爬虫项目中集成MySQL数据库进行数据存储,包括数据库的设计、数据的插入、查询以及优化策略。 #### 4.4.1 MySQL基础与安装 **MySQL简介** MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB公司开发,后被Sun Microsystems收购,并最终归属于Oracle Corporation。MySQL使用SQL(结构化查询语言)进行数据库管理,支持多种操作系统,包括Linux、Windows等,是Web应用中最常用的数据库之一。 **安装MySQL** - **Linux环境**:在大多数Linux发行版中,你可以通过包管理器(如apt-get、yum等)来安装MySQL。例如,在Ubuntu系统中,可以使用以下命令安装MySQL Server: ```bash sudo apt update sudo apt install mysql-server ``` 安装完成后,运行`sudo mysql_secure_installation`来设置root密码、移除匿名用户、禁止root远程登录等安全操作。 - **Windows环境**:访问MySQL官网下载MySQL Installer for Windows,选择需要的MySQL Server版本进行安装。安装过程中会提示你设置root密码等安全选项。 **连接到MySQL** - 使用命令行工具:在Linux或Windows中,你可以通过命令行工具连接到MySQL数据库。在Linux中,通常是`mysql -u root -p`,然后输入密码;在Windows中,可以使用MySQL Workbench等图形界面工具或通过命令提示符进行连接。 #### 4.4.2 数据库设计 在进行数据存储之前,合理的数据库设计是至关重要的。良好的数据库设计能够提升数据的存储效率,便于后期的数据维护和查询。 **需求分析** 首先,需要明确爬虫需要抓取哪些类型的数据,以及这些数据之间的关系。例如,一个简单的电商爬虫可能需要抓取商品信息(如名称、价格、图片URL、描述等)和店铺信息(如店铺名、评分、地址等)。 **表结构设计** 基于需求分析,可以设计相应的表结构。以下是一个简单的示例: ```sql CREATE DATABASE IF NOT EXISTS webcrawler; USE webcrawler; CREATE TABLE `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `price` DECIMAL(10, 2) NOT NULL, `image_url` VARCHAR(255), `description` TEXT, `shop_id` INT, FOREIGN KEY (shop_id) REFERENCES shops(id) ); CREATE TABLE `shops` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `rating` DECIMAL(3, 1), `address` VARCHAR(255) ); ``` 这个示例中,我们创建了两个表:`products`和`shops`,并通过`shop_id`字段建立了它们之间的外键关系。 #### 4.4.3 Python连接MySQL 在Python中,可以使用多种库来连接MySQL数据库,如`mysql-connector-python`、`PyMySQL`和`SQLAlchemy`等。这里以`mysql-connector-python`为例,展示如何连接MySQL数据库并执行基本的数据库操作。 **安装mysql-connector-python** 首先,需要安装`mysql-connector-python`库。可以通过pip安装: ```bash pip install mysql-connector-python ``` **连接数据库** ```python import mysql.connector config = { 'user': 'root', 'password': 'yourpassword', 'host': '127.0.0.1', 'database': 'webcrawler', 'raise_on_warnings': True } cnx = mysql.connector.connect(**config) cursor = cnx.cursor() ``` **执行SQL语句** - **插入数据** ```python insert_stmt = ( "INSERT INTO products (name, price, image_url, description, shop_id) " "VALUES (%s, %s, %s, %s, %s)" ) data = ('Product A', 199.99, 'http://example.com/image.jpg', 'Product description...', 1) cursor.execute(insert_stmt, data) cnx.commit() ``` - **查询数据** ```python query = "SELECT * FROM products" cursor.execute(query) for (id, name, price, image_url, description, shop_id) in cursor: print(f"ID: {id}, Name: {name}, Price: {price}, Image URL: {image_url}") ``` - **更新和删除数据** 更新和删除数据的操作与插入数据类似,只是SQL语句和传递的参数有所不同。 **关闭连接** ```python cursor.close() cnx.close() ``` #### 4.4.4 性能优化 随着数据量的增加,数据库的性能问题逐渐显现。以下是一些常见的优化策略: - **索引优化**:为经常查询的列添加索引可以显著提高查询效率。但过多的索引会占用额外的存储空间,并降低写操作的性能。 - **查询优化**:优化SQL查询语句,减少不必要的表连接和子查询,合理使用聚合函数等。 - **硬件升级**:增加服务器的CPU、内存和存储性能,或使用更快的存储介质(如SSD)。 - **读写分离**:将读操作和写操作分散到不同的数据库服务器上,以减轻主数据库服务器的负担。 - **分库分表**:当单个数据库或表的数据量过大时,可以考虑进行分库分表,将数据分散到多个数据库或表中。 #### 4.4.5 总结 MySQL作为网络爬虫项目中常用的数据存储方案,其稳定性和高效性得到了广泛的认可。通过合理的数据库设计、高效的Python数据库操作以及适时的性能优化,可以确保爬虫项目中的数据存储既可靠又高效。在实际开发中,还需要根据具体的应用场景和需求,灵活选择适合的数据库设计方案和优化策略。
上一篇:
4.3 CSV 文件存储
下一篇:
4.5 MongoDB 文档存储
该分类下的相关小册推荐:
Python合辑3-字符串用法深度总结
Python高性能编程与实战
Python合辑14-面向对象编程案例(下)
Python合辑9-判断和循环
Python爬虫入门与实战开发(上)
剑指Python(万变不离其宗)
Python编程轻松进阶(四)
Python与办公-玩转PPT
Python合辑12-面向对象
实战Python网络爬虫
Python甚础Django与爬虫
Python数据分析与挖掘实战(上)