You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.5 KiB
44 lines
1.5 KiB
package com.crawler;
|
|
|
|
import com.crawler.model.Movie;
|
|
import com.crawler.spider.DoubanSpider;
|
|
import com.crawler.utils.DataUtils;
|
|
import com.crawler.ui.MovieResultDisplay;
|
|
|
|
import java.util.List;
|
|
|
|
public class MovieMain {
|
|
public static void main(String[] args) {
|
|
try {
|
|
System.out.println("开始爬取豆瓣电影Top250数据...");
|
|
|
|
// 1. 启动爬虫
|
|
DoubanSpider spider = new DoubanSpider();
|
|
List<Movie> movieList = spider.crawlMovies();
|
|
|
|
// 2. 清洗数据
|
|
List<Movie> cleanedMovies = movieList.stream()
|
|
.map(DataUtils::cleanMovie)
|
|
.filter(movie -> movie != null)
|
|
.toList();
|
|
|
|
// 3. 保存数据到CSV文件
|
|
DataUtils.writeMovieToCSV(cleanedMovies, "douban_movies.csv");
|
|
System.out.println("数据已保存到 douban_movies.csv");
|
|
|
|
// 4. 展示结果
|
|
MovieResultDisplay.displayResults(cleanedMovies);
|
|
|
|
// 5. 生成图表
|
|
MovieResultDisplay.generateRatingDistributionChart(cleanedMovies);
|
|
MovieResultDisplay.generateYearDistributionChart(cleanedMovies);
|
|
MovieResultDisplay.generateGenreDistributionChart(cleanedMovies);
|
|
MovieResultDisplay.generateYearRatingChart(cleanedMovies);
|
|
|
|
System.out.println("\n爬虫任务完成!");
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|