diff --git a/project1/Main.java b/project1/Main.java new file mode 100644 index 0000000..45a6b31 --- /dev/null +++ b/project1/Main.java @@ -0,0 +1,71 @@ +package com.example; + +import com.example.bean.Movie; +import com.example.crawler.MovieCrawler; +import com.example.chart.DrawChart; +import java.io.FileWriter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class Main { + public static void main(String[] args) { + + // 1. 爬取数据 + MovieCrawler crawler = new MovieCrawler(); + List movies = crawler.start(); + + // 2. 数据清洗 + List cleanData = new ArrayList<>(); + for (Movie movie : movies) { + if (movie.getTitle() != null && !movie.getTitle().isBlank()) { + cleanData.add(movie); + } + } + + // ===================== CSV 保存功能 恢复!===================== + try (FileWriter writer = new FileWriter("movie_top100.csv")) { + writer.write("电影名称,评分,导演,上映年份\n"); + for (Movie m : cleanData) { + writer.write(m.getTitle() + "," + m.getScore() + "," + m.getDirector() + "," + m.getYear() + "\n"); + } + System.out.println("✅ CSV 文件已保存:movie_top100.csv"); + } catch (Exception e) { + e.printStackTrace(); + } + // ============================================================== + + // 3. 评分统计 + Map scoreCount = cleanData.stream() + .collect(Collectors.groupingBy(Movie::getScore, Collectors.counting())); + + // 4. 控制台打印表格 + System.out.println("\n=========================================="); + System.out.println(" 电影评分统计表格 "); + System.out.println("=========================================="); + System.out.printf("%-10s %-10s %-10s%n", "评分", "数量(部)", "占比(%)"); + System.out.println("------------------------------------------"); + + double total = cleanData.size(); + for (Map.Entry entry : scoreCount.entrySet()) { + String score = entry.getKey(); + long count = entry.getValue(); + double rate = (count * 100.0) / total; + System.out.printf("%-12s %-12d %-10.2f%n", score, count, rate); + } + + System.out.println("------------------------------------------"); + System.out.printf("总计:%d 部电影%n", (long) total); + System.out.println("=========================================="); + + // 5. 生成正常折线图:按排名 1→100 顺序连线 + List scoreList = new ArrayList<>(); + for (Movie movie : cleanData) { + scoreList.add(Double.parseDouble(movie.getScore())); + } + + DrawChart drawing = new DrawChart(); + drawing.drawByOrder(scoreList); + } +} \ No newline at end of file diff --git a/project1/movie_top100.csv b/project1/movie_top100.csv new file mode 100644 index 0000000..b1feaa5 --- /dev/null +++ b/project1/movie_top100.csv @@ -0,0 +1,101 @@ +电影名称,评分,导演,上映年份 +肖申克的救赎,9.7,弗兰克·德拉邦特,1994 +霸王别姬,9.6,陈凯歌,1993 +泰坦尼克号,9.5,詹姆斯·卡梅隆,1997 +阿甘正传,9.5,罗伯特·泽米吉斯,1994 +千与千寻,9.4,宫崎骏,2001 +美丽人生,9.5,罗伯托·贝尼尼,1997 +星际穿越,9.4,克里斯托弗·诺兰,2014 +这个杀手不太冷,9.4,吕克·贝松,1994 +盗梦空间,9.4,克里斯托弗·诺兰,2010 +楚门的世界,9.4,彼得·威尔,1998 +辛德勒的名单,9.5,史蒂文·斯皮尔伯格,1993 +忠犬八公的故事,9.4,莱塞·霍尔斯道姆,2009 +海上钢琴师,9.3,朱塞佩·托纳多雷,1998 +疯狂动物城,9.3,拜伦·霍华德,2016 +三傻大闹宝莱坞,9.2,拉库马·希拉尼,2009 +机器人总动员,9.3,安德鲁·斯坦顿,2008 +放牛班的春天,9.3,克里斯托夫·巴拉蒂,2004 +无间道,9.3,刘伟强,2002 +控方证人,9.6,比利·怀尔德,1957 +寻梦环游记,9.1,李·昂克里奇,2017 +大话西游之大圣娶亲,9.2,刘镇伟,1995 +熔炉,9.3,黄东赫,2011 +触不可及,9.3,奥利维·那卡什,2011 +教父,9.3,弗朗西斯·福特·科波拉,1972 +末代皇帝,9.3,贝纳尔多·贝托鲁奇,1987 +大话西游之大圣娶亲,9.2,刘镇伟,1995 +熔炉,9.3,黄东赫,2011 +触不可及,9.3,奥利维·那卡什,2011 +教父,9.3,弗朗西斯·福特·科波拉,1972 +末代皇帝,9.3,贝纳尔多·贝托鲁奇,1987 +哈利·波特与魔法石,9.2,Chris,2001 +当幸福来敲门,9.1,加布里尔·穆奇诺,2006 +龙猫,9.2,宫崎骏,1988 +活着,9.3,张艺谋,1994 +怦然心动,9.1,罗伯·莱纳,2010 +蝙蝠侠:黑暗骑士,9.2,克里斯托弗·诺兰,2008 +指环王3:王者无敌,9.3,彼得·杰克逊,2003 +我不是药神,9.0,文牧野,2018 +乱世佳人,9.3,维克多·弗莱明,1939 +飞屋环游记,9.1,彼特·道格特,2009 +让子弹飞,9.0,姜文,2010 +哈尔的移动城堡,9.1,宫崎骏,2004 +十二怒汉,9.4,西德尼·吕美特,1957 +海蒂和爷爷,9.3,阿兰·葛斯彭纳,2015 +素媛,9.3,李濬益,2013 +猫鼠游戏,9.1,史蒂文·斯皮尔伯格,2002 +天空之城,9.2,宫崎骏,1986 +鬼子来了,9.3,姜文,2000 +摔跤吧!爸爸,9.0,涅提·蒂瓦里,2016 +少年派的奇幻漂流,9.1,李安,2012 +猫鼠游戏,9.1,史蒂文·斯皮尔伯格,2002 +天空之城,9.2,宫崎骏,1986 +鬼子来了,9.3,姜文,2000 +摔跤吧!爸爸,9.0,涅提·蒂瓦里,2016 +少年派的奇幻漂流,9.1,李安,2012 +钢琴家,9.3,罗曼·波兰斯基,2002 +指环王2:双塔奇兵,9.2,彼得·杰克逊,2002 +死亡诗社,9.2,彼得·威尔,1989 +大话西游之月光宝盒,9.0,刘镇伟,1995 +绿皮书,8.9,彼得·法雷里,2018 +何以为家,9.1,娜丁·拉巴基,2018 +闻香识女人,9.1,马丁·布莱斯,1992 +大闹天宫,9.4,万籁鸣,未知 +黑客帝国,9.1,安迪·沃卓斯基,1999 +指环王1:护戒使者,9.1,彼得·杰克逊,2001 +罗马假日,9.1,威廉·惠勒,1953 +教父2,9.3,弗朗西斯·福特·科波拉,1974 +狮子王,9.1,Roger,1994 +天堂电影院,9.2,朱塞佩·托纳多雷,1988 +饮食男女,9.2,李安,1994 +辩护人,9.2,杨宇硕,2013 +本杰明·巴顿奇事,9.0,大卫·芬奇,2008 +搏击俱乐部,9.0,大卫·芬奇,1999 +美丽心灵,9.1,朗·霍华德,2001 +穿条纹睡衣的男孩,9.2,马克·赫尔曼,2008 +辩护人,9.2,杨宇硕,2013 +本杰明·巴顿奇事,9.0,大卫·芬奇,2008 +搏击俱乐部,9.0,大卫·芬奇,1999 +美丽心灵,9.1,朗·霍华德,2001 +穿条纹睡衣的男孩,9.2,马克·赫尔曼,2008 +情书,8.9,岩井俊二,1995 +哈利·波特与死亡圣器(下),9.0,大卫·叶茨,2011 +两杆大烟枪,9.1,盖·里奇,1998 +窃听风暴,9.2,弗洛里安·亨克尔·冯·多纳斯马尔克,2006 +音乐之声,9.1,罗伯特·怀斯,1965 +功夫,8.9,周星驰,2004 +哈利·波特与阿兹卡班的囚徒,9.0,阿方索·卡隆,2004 +西西里的美丽传说,8.9,朱塞佩·托纳多雷,2000 +阿凡达,8.8,詹姆斯·卡梅隆,2009 +看不见的客人,8.8,奥里奥尔·保罗,2016 +拯救大兵瑞恩,9.1,史蒂文·斯皮尔伯格,1998 +沉默的羔羊,8.9,乔纳森·戴米,1991 +小鞋子,9.2,马基德·马基迪,1997 +布达佩斯大饭店,8.9,韦斯·安德森,2014 +蝴蝶效应,8.9,埃里克·布雷斯,2004 +飞越疯人院,9.1,米洛斯·福尔曼,1975 +禁闭岛,8.9,Martin,2010 +还有明天,9.3,宝拉·柯特莱西,2023 +心灵捕手,9.0,格斯·范·桑特,1997 +致命魔术,8.9,克里斯托弗·诺兰,2006 diff --git a/project1/pom.xml b/project1/pom.xml new file mode 100644 index 0000000..15ce73b --- /dev/null +++ b/project1/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + com.crawler + movie-crawler + 1.0 + + + 8 + 8 + + + + + + org.jsoup + jsoup + 1.15.4 + + + + + org.knowm.xchart + xchart + 3.8.4 + + + + + com.opencsv + opencsv + 5.6 + + + + + mysql + mysql-connector-java + 8.0.33 + + + \ No newline at end of file diff --git a/project1/排名顺序折线图.png b/project1/排名顺序折线图.png new file mode 100644 index 0000000..01230df Binary files /dev/null and b/project1/排名顺序折线图.png differ diff --git a/project1/柱状图.png b/project1/柱状图.png new file mode 100644 index 0000000..eb09151 Binary files /dev/null and b/project1/柱状图.png differ