本项目是一个基于 Python 的数据处理与分析平台,核心功能是抓取豆瓣电影 Top250 的数据,将其持久化到 MySQL 数据库,并进行数据分析与可视化。
项目采用现代化的分层架构设计,将数据抓取、数据库操作、业务逻辑与数据分析清晰地分离,实现了高度的模块化和可维护性。
- 核心框架: Python 3.x
- 数据抓取:
requests,beautifulsoup4 - 数据库:
MySQL 8+,PyMySQL - 数据分析:
pandas,numpy - 数据可视化:
matplotlib,seaborn - 配置管理:
python-dotenv - 加密支持:
cryptography
top250DA/
├── .env # 存储环境变量 (需手动创建)
├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
├── config/ # 配置模块
│ └── settings.py
├── src/ # 核心源码
│ ├── domain/ # 领域模型 (Movie)
│ ├── repository/ # 数据仓库层 (抓取、数据库交互)
│ ├── services/ # 业务逻辑层
│ └── analysis/ # 数据分析与可视化
└── main.py # 项目主入口
- 从豆瓣 Top250 网站抓取电影的标题、评分、年份、国家/地区、类型和评语。
- 支持配置抓取页数。
- 使用随机 User-Agent 防止被封禁。
- 连接到 MySQL 数据库。
- 自动创建
movies数据表(如果不存在)。 - 将抓取到的电影数据批量插入或更新到数据库中。
- 从数据库加载全部电影数据。
- 清洗和预处理数据。
- 生成以下可视化图表并保存到本地:
- 电影年代分布柱状图
- 电影评分分布直方图
- 中外电影比例饼图
- Python 3.8+
- Pip
- MySQL 8.0+
- 克隆项目到本地:
git clone https://gitee.com/qqh2310904/top250DA.git - 进入项目目录:
cd top250DA - 在项目根目录下创建并配置
.env文件(详见下文)。 - 创建并激活 Python 虚拟环境。
- 在虚拟环境中安装所有依赖。
- 初始化数据库。
- 运行主程序。
请确保您的 MySQL 服务正在运行,并创建一个数据库(名称需与 .env 文件中的 DB_NAME 保持一致)。
CREATE DATABASE `db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;项目首次运行时会自动创建 movies 表。您也可以手动执行以下 SQL 创建:
CREATE TABLE `movies` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`rating` decimal(3,1) NOT NULL,
`year` int DEFAULT NULL,
`country` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`genre` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`quote` text COLLATE utf8mb4_unicode_ci,
PRIMARY KEY (`id`),
UNIQUE KEY `title` (`title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;# 步骤 1: 创建并配置 .env 文件
# 在项目根目录手动创建 .env 文件,并填入以下内容
# --- .env file content ---
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_USER=root
# DB_PASSWORD=your_actual_password
# DB_NAME=db
# -------------------------
# 步骤 2: 创建虚拟环境
python -m venv .venv
# 步骤 3: 激活虚拟环境 (Windows)
.\.venv\Scripts\activate
# 步骤 4: 安装依赖
pip install -r requirements.txt
# 步骤 5: 运行项目
python main.py- 在运行项目前,请确保 MySQL 服务已启动。
- 请务必在
.env文件中配置正确的数据库用户名和密码。 - 项目运行后,生成的分析图表(
.png文件)会保存在项目的根目录下。
Apache License 2.0