# 电影数据抓取与分析项目 (Java) 本项目是《高级程序设计(Java)》课程的实践项目,主要功能是从豆瓣电影 Top 250 抓取影片数据,进行清洗、存储和多维度的统计分析,并以图表和报告的形式展示结果。 ## 1. 核心任务 - **数据源**: [豆瓣电影 Top 250](https://movie.douban.com/top250) - **技术栈**: Java 11, Maven, Jsoup (爬虫), Jackson (JSON 解析), JFreeChart (图表生成) - **分析维度**: 评分分布、评价人数排行、导演统计等。 ## 2. 功能模块 1. **网络爬虫 (`MovieCrawler`)**: 使用 Jsoup 模拟浏览器请求,抓取电影排名、标题、评分、年份、导演及评价人数。 2. **数据清洗与模型 (`Movie`)**: 定义实体类,清洗抓取到的 HTML 文本并进行格式化。 3. **数据分析 (`DataAnalyzer`)**: 使用 Java 8 Stream API 进行统计计算(平均分、评分段分布等)。 4. **结果展示 (`ResultDisplay`)**: 控制台格式化输出表格,并生成 PNG 格式的评分分布图表。 5. **持久化**: 将抓取到的数据以 JSON 格式保存至本地文件。 ## 3. 运行指南 ### 3.1 环境要求 - JDK 11+ - Maven 3.6+ ### 3.2 编译与运行 在 `project` 目录下执行: **通用命令 (推荐)**: ```bash mvn clean compile exec:java ``` **手动指定主类 (若需要)**: - **Bash/CMD**: `mvn exec:java -Dexec.mainClass="com.movieratings.Main"` - **PowerShell**: `mvn exec:java "-Dexec.mainClass=com.movieratings.Main"` ### 3.3 输出结果 - **控制台**: 实时显示抓取进度、统计分析报告及格式化表格。 - **本地文件**: - `movies_data.json`: 完整的电影数据抓取结果。 - `rating_chart.png`: 评分分布的可视化图表。 ## 4. 依赖项 (pom.xml) - `org.jsoup:jsoup`: 网页解析。 - `com.fasterxml.jackson.core:jackson-databind`: JSON 序列化。 - `org.jfree:jfreechart`: 图表绘制。 - `org.projectlombok:lombok`: 简化实体类代码。