# 豆瓣电影可视化 **Repository Path**: cloud-order-taking/douban-movie-visualization ## Basic Information - **Project Name**: 豆瓣电影可视化 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电影票房数据分析可视化系统 技术栈:**Python 3 + FastAPI + MySQL + Vue 3 + Vite + Element Plus + ECharts**。 后端依赖建议 **Python 3.11~3.12**(含预编译 wheel);**Python 3.14** 上 `pandas` 等可能需本地编译并安装 **Visual Studio C++ 生成工具**,否则 `pip install` 易失败。 - 后端默认端口 **8995**,前端 **5173**。 - 登录后访问各分析页;**爬虫管理**仅 **admin** 可见。 - 爬虫**无定时任务**:仅在 **数据库无影片数据时首次启动后台自动爬取一次**,以及 **管理员手动触发**。 ## 一、准备 MySQL 1. 安装 MySQL 5.7+ / 8.0,创建用户并授权。 2. 执行初始化脚本: ```bash mysql -u root -p < backend/database/init.sql ``` 3. 如需修改连接,可设置环境变量或编辑 `backend/config.py`: - `MYSQL_HOST`(默认 `127.0.0.1`) - `MYSQL_PORT`(默认 `3306`) - `MYSQL_USER`(默认 `root`) - `MYSQL_PASSWORD`(默认 `root`) - `MYSQL_DATABASE`(默认 `movie_db`) ## 二、启动后端 ### Windows 双击启动(推荐) - 直接双击项目根目录下的 `start_backend.bat` - 脚本会自动完成:创建虚拟环境、安装依赖、启动 `uvicorn` ### 命令行启动 ```bash cd backend python -m venv .venv # Windows: .venv\Scripts\activate pip install -r requirements.txt uvicorn main:app --reload --host 0.0.0.0 --port 8995 ``` ## 三、启动前端 ```bash cd frontend npm install npm run dev ``` 浏览器访问: 开发模式下 Vite 已将 `/api` 代理到 `http://127.0.0.1:8995`。 ## 四、默认账号 | 用户名 | 密码 | 角色 | |--------|----------|--------| | admin | admin123 | 管理员 | 管理员可进入 **爬虫管理** 手动触发 `top250` / `nowplaying` / `single:{douban_id}`。 ## 五、说明 - 豆瓣对影片页有 **SHA-512 工作量证明 + sec.douban.com/c 提交**;本项目已在纯 `requests` 下自动完成(POST 到 `https://sec.douban.com/c`,不是 `movie.douban.com/c`)。 - 过盾后偶发返回 **m.douban 精简壳页**(无 `#info`)。代码会 **自动重试** 直到拿到含 `#info` 的桌面 HTML(或耗尽重试次数)。 - **短评**:独立 `/comments` 页多为异步加载,难以用静态 HTML 分页抓取;当前从 **详情页「热门短评」** 区块抽取,条数通常约 **5~20 条**(视页面开放条数而定),与需求中「5 页短评」的体量可能不一致,属站点形态限制。 - 部分影片无公开票房字段时,后端会用 **基于评分人数的估算票房** 并生成 **每日票房曲线** 以便趋势/关联分析演示,**非真实宣发数据**。 - 生产环境请修改 `JWT_SECRET_KEY` 与数据库口令,并限制管理接口访问来源。 ## 六、主要 API 一览 - 公开:`POST /api/auth/login`、`POST /api/auth/register` - 登录后:`/api/auth/me`、`/api/movies`、`/api/boxoffice/*`、`/api/analysis/*`、`/api/sentiment/*`、`/api/dashboard/stats` - 管理员:`POST /api/spider/run`、`GET /api/spider/status`、`GET /api/spider/logs`