From 9abdaf4a414e55543904ac80e556fca621e69b81 Mon Sep 17 00:00:00 2001 From: Wangyifei <935057973@qq.com> Date: Sat, 30 May 2026 17:31:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4Java=E7=88=AC=E8=99=AB?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BB=A3=E7=A0=81=E4=B8=8E=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...06050305-王亦菲-期末实验报告.docx | Bin 0 -> 530303 bytes project/charts/book_author_bar.png | Bin 0 -> 27005 bytes project/charts/book_price_pie.png | Bin 0 -> 20843 bytes project/charts/movie_director_bar.png | Bin 0 -> 21205 bytes project/charts/movie_genre_pie.png | Bin 0 -> 19867 bytes project/charts/movie_rating_bar.png | Bin 0 -> 11040 bytes project/charts/music_artist_bar.png | Bin 0 -> 22296 bytes project/charts/music_duration_pie.png | Bin 0 -> 22006 bytes project/charts/news_sentiment_pie.png | Bin 0 -> 19028 bytes project/charts/news_word_bar.png | Bin 0 -> 38146 bytes project/data/book_data.json | 81 ++ project/data/movie_data.json | 141 +++ project/data/music_data.json | 81 ++ project/data/news_data.json | 101 ++ project/pom.xml | 105 ++ project/run.bat | 48 + project/src/main/java/com/example/Main.java | 1084 +++++++++++++++++ .../com/example/analysis/BookAnalyzer.java | 173 +++ .../com/example/analysis/ChartGenerator.java | 331 +++++ .../com/example/analysis/DataCleaner.java | 187 +++ .../com/example/analysis/MovieAnalyzer.java | 285 +++++ .../com/example/analysis/MusicAnalyzer.java | 189 +++ .../com/example/analysis/NewsAnalyzer.java | 298 +++++ .../example/chart/JFreeChartGenerator.java | 399 ++++++ .../java/com/example/command/Command.java | 6 + .../com/example/command/CommandInvoker.java | 51 + .../com/example/command/ExportCommand.java | 39 + .../com/example/command/GetHotCommand.java | 29 + .../com/example/command/ImportCommand.java | 45 + .../com/example/command/SearchCommand.java | 35 + .../example/controller/SpiderController.java | 91 ++ .../java/com/example/core/CrawlResult.java | 47 + .../java/com/example/core/MusicSpider.java | 260 ++++ .../main/java/com/example/core/Platform.java | 33 + .../example/exception/ExceptionHandler.java | 47 + .../example/exception/NetworkException.java | 12 + .../com/example/exception/ParseException.java | 12 + .../example/exception/SpiderException.java | 19 + .../example/exception/StorageException.java | 12 + .../com/example/invoker/SpiderInvoker.java | 56 + .../main/java/com/example/model/Article.java | 37 + .../main/java/com/example/model/BookItem.java | 121 ++ .../main/java/com/example/model/Chart.java | 86 ++ .../java/com/example/model/ChartItem.java | 99 ++ .../java/com/example/model/ChartType.java | 39 + .../main/java/com/example/model/Comment.java | 43 + .../java/com/example/model/MovieItem.java | 78 ++ .../main/java/com/example/model/NewsItem.java | 29 + .../src/main/java/com/example/model/Song.java | 54 + .../service/impl/EnhancedHttpClient.java | 198 +++ .../example/spider/NetEaseMusicSpider.java | 391 ++++++ .../spider/book/DangdangBookSpider.java | 494 ++++++++ .../spider/movie/DoubanMovieSpider.java | 355 ++++++ .../example/spider/news/ChinanewsSpider.java | 172 +++ .../com/example/storage/DataExporter.java | 90 ++ .../com/example/storage/DatabaseManager.java | 433 +++++++ .../com/example/storage/JsonExporter.java | 47 + .../com/example/storage/JsonImporter.java | 44 + .../example/strategy/AntiBlockStrategy.java | 20 + .../strategy/DefaultAntiBlockStrategy.java | 114 ++ .../strategy/EnhancedAntiBlockStrategy.java | 194 +++ .../example/strategy/RequestThrottler.java | 99 ++ .../com/example/strategy/SpiderStrategy.java | 16 + .../com/example/strategy/UserAgentPool.java | 86 ++ .../java/com/example/view/ConsoleView.java | 112 ++ project/src/main/resources/spider-config.json | 46 + 66 files changed, 7794 insertions(+) create mode 100644 project/202506050305-王亦菲-期末实验报告.docx create mode 100644 project/charts/book_author_bar.png create mode 100644 project/charts/book_price_pie.png create mode 100644 project/charts/movie_director_bar.png create mode 100644 project/charts/movie_genre_pie.png create mode 100644 project/charts/movie_rating_bar.png create mode 100644 project/charts/music_artist_bar.png create mode 100644 project/charts/music_duration_pie.png create mode 100644 project/charts/news_sentiment_pie.png create mode 100644 project/charts/news_word_bar.png create mode 100644 project/data/book_data.json create mode 100644 project/data/movie_data.json create mode 100644 project/data/music_data.json create mode 100644 project/data/news_data.json create mode 100644 project/pom.xml create mode 100644 project/run.bat create mode 100644 project/src/main/java/com/example/Main.java create mode 100644 project/src/main/java/com/example/analysis/BookAnalyzer.java create mode 100644 project/src/main/java/com/example/analysis/ChartGenerator.java create mode 100644 project/src/main/java/com/example/analysis/DataCleaner.java create mode 100644 project/src/main/java/com/example/analysis/MovieAnalyzer.java create mode 100644 project/src/main/java/com/example/analysis/MusicAnalyzer.java create mode 100644 project/src/main/java/com/example/analysis/NewsAnalyzer.java create mode 100644 project/src/main/java/com/example/chart/JFreeChartGenerator.java create mode 100644 project/src/main/java/com/example/command/Command.java create mode 100644 project/src/main/java/com/example/command/CommandInvoker.java create mode 100644 project/src/main/java/com/example/command/ExportCommand.java create mode 100644 project/src/main/java/com/example/command/GetHotCommand.java create mode 100644 project/src/main/java/com/example/command/ImportCommand.java create mode 100644 project/src/main/java/com/example/command/SearchCommand.java create mode 100644 project/src/main/java/com/example/controller/SpiderController.java create mode 100644 project/src/main/java/com/example/core/CrawlResult.java create mode 100644 project/src/main/java/com/example/core/MusicSpider.java create mode 100644 project/src/main/java/com/example/core/Platform.java create mode 100644 project/src/main/java/com/example/exception/ExceptionHandler.java create mode 100644 project/src/main/java/com/example/exception/NetworkException.java create mode 100644 project/src/main/java/com/example/exception/ParseException.java create mode 100644 project/src/main/java/com/example/exception/SpiderException.java create mode 100644 project/src/main/java/com/example/exception/StorageException.java create mode 100644 project/src/main/java/com/example/invoker/SpiderInvoker.java create mode 100644 project/src/main/java/com/example/model/Article.java create mode 100644 project/src/main/java/com/example/model/BookItem.java create mode 100644 project/src/main/java/com/example/model/Chart.java create mode 100644 project/src/main/java/com/example/model/ChartItem.java create mode 100644 project/src/main/java/com/example/model/ChartType.java create mode 100644 project/src/main/java/com/example/model/Comment.java create mode 100644 project/src/main/java/com/example/model/MovieItem.java create mode 100644 project/src/main/java/com/example/model/NewsItem.java create mode 100644 project/src/main/java/com/example/model/Song.java create mode 100644 project/src/main/java/com/example/service/impl/EnhancedHttpClient.java create mode 100644 project/src/main/java/com/example/spider/NetEaseMusicSpider.java create mode 100644 project/src/main/java/com/example/spider/book/DangdangBookSpider.java create mode 100644 project/src/main/java/com/example/spider/movie/DoubanMovieSpider.java create mode 100644 project/src/main/java/com/example/spider/news/ChinanewsSpider.java create mode 100644 project/src/main/java/com/example/storage/DataExporter.java create mode 100644 project/src/main/java/com/example/storage/DatabaseManager.java create mode 100644 project/src/main/java/com/example/storage/JsonExporter.java create mode 100644 project/src/main/java/com/example/storage/JsonImporter.java create mode 100644 project/src/main/java/com/example/strategy/AntiBlockStrategy.java create mode 100644 project/src/main/java/com/example/strategy/DefaultAntiBlockStrategy.java create mode 100644 project/src/main/java/com/example/strategy/EnhancedAntiBlockStrategy.java create mode 100644 project/src/main/java/com/example/strategy/RequestThrottler.java create mode 100644 project/src/main/java/com/example/strategy/SpiderStrategy.java create mode 100644 project/src/main/java/com/example/strategy/UserAgentPool.java create mode 100644 project/src/main/java/com/example/view/ConsoleView.java create mode 100644 project/src/main/resources/spider-config.json diff --git a/project/202506050305-王亦菲-期末实验报告.docx b/project/202506050305-王亦菲-期末实验报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..52486891d7536bb6fc54ec5f69c500930534d0af GIT binary patch literal 530303 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

ohyGpA- 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≫bKPIuBtRc6 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

Tr(yWoq3Jy@#O}ro_#%F|i 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 z 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

DDd!H4~9JGEJk>0%w)*p9_5d+>}A$ac}4tQO`%@ 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⪼-Q;jS zy;5X0ze` zXvdqH@jDOee|Ym)9>iB4?5Sk;!Z#X3IS3SBMiM?VSBv>sXu|F$x5S2z2<#;)r4!s4crgXYQNl! z8kkx0&LUn4dM9Rw_^`Y=Bi#zxW}na;eZK~Vj3lDxI}%+hvl=D11X4)>Q1k$f>|f6V zL+%)-1Q*+OQ}ylGodm85sNO0GkdVZ6#cE*%p09*Rj<1IA1d?4F z=;ReJPSUwd!D#-2rW|_aR3A<+B2HZIq${;OAbx31BoY-}aMJIZYk4C>g{x@@J)*ET zSG-1|jzQSw!>dl9d8QXF@DsXGtU5kLx{@el8uiTB@qq$O{7v**-%;D!QUNJ#BC*xj z?7=~-wb9|4$EV|~Db5Ws#ga|QHVQ$HKQQH+3qa2uYJ}jtUsgG2T}mEKk&q0+Vr)*p zJQa(qbR4~Cl4;u3`^%g7oDUA?r?ef^=ZpYU9fe(%G=wt&cjPFJsW^4aSxx-$YUh6J zr!W2IToo-+lGKrS z$Y|a*GS*jnm@P4KzTIbUjl_fZL4&VM!blH^tzCL>MNlzP97%C7E@F1Nl>GRa`UaUf zjPkM(q!J}Nv({%c#6!m?1~3GVdZP5;B0g4MViHv*MyuTGHL^!RkgJ8eO@qVt!w|JB zNBp!M{gYUlcg!W9*Dx=%?BvEmaLqHgfZ3l+#0MH9`VUEgtIcm~@H@eooIm|8=a-Au z$>9DdMP*4Ei~bwIW131|5O2Xe^>kOG)1(a_v0`GQ(NC!$9AUYOpu0?oXU4F`1d_hT z&@WbSy?GH)lZH!op5Z|ZS$n)30P&IE$wvLZ;|717CG+sOChpVtGP~BM@b!Gu!)($U z=QoR>Mo4BsqW=CxmH2 z0H|o-C%W(db|*d1O`oiv_BDVaFZ8>Hd%3mfQVP;Bwl|%Y_HW$=gPh{&D($B~*Dl0q zB-hTN-U#5?Dj6D&kT zl9RH1Hg~&5JS(MZ=PU;}^%APYb7pp%uwCPCHX+P}-4ih?@N?zM#)>&FRRd050t@!+pdXq}%ew6rbZ@?Swl=r)VA3P^K@8%c%v-r*-Ep*(N6;jQ|`S!5X zCH1Uz3W9^$&*A9`6g8(rYt|!arodpNJcICn7t~6uA#1%?u1G&?3#*H`pc+xByQbf*6Aygt_%dA5kM zGHY&SId5?o^mM;Zx@s2n0?k-p;Bx>|K&-#Zs`g>cS75yuFHrd1r%@Zno#!dZd5a|K zHtHqKW-u_iY1n6`4_YNLZA?nMj*R2ym zQ9H*B!OUGbOL%4n7`=@Hq|LN}U{p?>j+)ve$N<3yfl~w-9bnKlHFP58S_ep$1%tuu z)Nu`Rz&Lf3RJ?6bUe;bIyz6vp;ciW4)uFc%RHB?oL#hm|1%pwFcZIgPNB8!pre>*o zBX3XxOq_=mc4{*xcPgsczKOuxIHs&X03r+HkUVa}lxHjn7K*e|w1W9Jh@2 z1MCgq(Q%WWI5wB7
MA}@5o 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�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 S$zj%ybWa;-7M{9#`~Lv+rhP8} literal 0 HcmV?d00001 diff --git a/project/charts/music_duration_pie.png b/project/charts/music_duration_pie.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c630e3f9c50807f3ecbd694860ca457209ceed GIT binary patch literal 22006 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%0AVE{)#Jyv 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≷%B{6biQa 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 literal 0 HcmV?d00001 diff --git a/project/data/book_data.json b/project/data/book_data.json new file mode 100644 index 0000000..201d920 --- /dev/null +++ b/project/data/book_data.json @@ -0,0 +1,81 @@ +[ { + "id" : "12100008885", + "title" : "小王子(畅销500万册,罗翔老师推荐,李继宏口碑译作,作者基金会官方认证)【果麦经典】", + "author" : "", + "rating" : "9.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "19.90" +}, { + "id" : "24019291", + "title" : "神奇的答案之书(2024全新修订版,足足784页)畅销92个月的神奇之书,已给百万读者带去神秘指引,愿一切无解都有解。", + "author" : "梅森 知书达礼 出品", + "rating" : "9.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "26.30" +}, { + "id" : "29913529", + "title" : "云边有个小卖部新版 畅销1000万册新版 新增长篇后记 番外插画 多重精美赠品 三封面设计 当当自营", + "author" : "张嘉佳 著,博集天卷 出品", + "rating" : "9.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "21.80" +}, { + "id" : "12100014884", + "title" : "学为贵真经教学体系畅销教材 刘洪波雅思真经5 雅思听力王陆雅思王听力真题语料库 杨帅口语 杨帅雅思口语900句 等名师编", + "author" : "", + "rating" : "9.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "14.25" +}, { + "id" : "12100018678", + "title" : "北科保健畅销书", + "author" : "", + "rating" : "9.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "65.60" +}, { + "id" : "12100020748", + "title" : "小学生畅销课外阅读书小鲤鱼跳龙门小巴掌童话快乐读书吧一年级课外阅读书2年级课外阅读漫画十万个为什么百科科普漫画版四大名著", + "author" : "", + "rating" : "8.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "12.00" +}, { + "id" : "29816257", + "title" : "堂吉诃德(全2册):现象级畅销书全本全译无删减 上下两册共920页 插图版・收录古斯塔夫・多雷插画 著名翻译家傅东华经典", + "author" : "(西)塞万提斯 著 傅东华 译", + "rating" : "9.2", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "78.40" +}, { + "id" : "29936526", + "title" : "龛世 (畅销书作家木苏里古风奇幻经典代表作,网络原名《铜钱龛世》,薛闲×玄悯,一人一龙,踏险遇奇,破阵解局,浮生共梦)", + "author" : "木苏里 著;欣欣向爱 出品", + "rating" : "9.0", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "78.00" +}, { + "id" : "29873524", + "title" : "图解黄帝内经 挂图版:畅销百万册图解经典系列全集,忠于原著!附赠两张全彩挂图 人人都能看得懂用得上", + "author" : "(明)李时珍著,健康大学堂编委会 编著", + "rating" : "9.5", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "37.40" +}, { + "id" : "27848420", + "title" : "畅销套装-救命饮食三部曲:非药而愈+我医我素+极简全蔬食(逆转和预防疾病的健康饮食)", + "author" : "徐嘉、卢丽爱、素愫", + "rating" : "9.2", + "publisher" : "当当图书", + "publishDate" : "", + "price" : "130.90" +} ] \ No newline at end of file diff --git a/project/data/movie_data.json b/project/data/movie_data.json new file mode 100644 index 0000000..5b2a883 --- /dev/null +++ b/project/data/movie_data.json @@ -0,0 +1,141 @@ +[ { + "id" : "1292052", + "title" : "肖申克的救赎", + "rating" : "9.7", + "releaseDate" : "1994", + "genre" : "剧情", + "director" : "弗兰克·德拉邦特 F..." +}, { + "id" : "1291546", + "title" : "霸王别姬", + "rating" : "9.6", + "releaseDate" : "1993", + "genre" : "剧情", + "director" : "陈凯歌 Kaige ..." +}, { + "id" : "1292722", + "title" : "泰坦尼克号", + "rating" : "9.5", + "releaseDate" : "1997", + "genre" : "剧情", + "director" : "詹姆斯·卡梅隆 Ja..." +}, { + "id" : "1292720", + "title" : "阿甘正传", + "rating" : "9.5", + "releaseDate" : "1994", + "genre" : "剧情", + "director" : "罗伯特·泽米吉斯 R..." +}, { + "id" : "1291561", + "title" : "千与千寻", + "rating" : "9.4", + "releaseDate" : "2001", + "genre" : "剧情", + "director" : "宫崎骏 Hayao ..." +}, { + "id" : "1292063", + "title" : "美丽人生", + "rating" : "9.5", + "releaseDate" : "1997", + "genre" : "剧情", + "director" : "罗伯托·贝尼尼 Ro..." +}, { + "id" : "1889243", + "title" : "星际穿越", + "rating" : "9.4", + "releaseDate" : "2014", + "genre" : "剧情", + "director" : "克里斯托弗·诺兰 C..." +}, { + "id" : "1295644", + "title" : "这个杀手不太冷", + "rating" : "9.4", + "releaseDate" : "1994", + "genre" : "剧情", + "director" : "吕克·贝松 Luc ..." +}, { + "id" : "3541415", + "title" : "盗梦空间", + "rating" : "9.4", + "releaseDate" : "2010", + "genre" : "剧情", + "director" : "克里斯托弗·诺兰 C..." +}, { + "id" : "1292064", + "title" : "楚门的世界", + "rating" : "9.4", + "releaseDate" : "1998", + "genre" : "剧情", + "director" : "彼得·威尔 Pete..." +}, { + "id" : "1295124", + "title" : "辛德勒的名单", + "rating" : "9.5", + "releaseDate" : "1993", + "genre" : "剧情", + "director" : "史蒂文·斯皮尔伯格 ..." +}, { + "id" : "3011091", + "title" : "忠犬八公的故事", + "rating" : "9.4", + "releaseDate" : "2009", + "genre" : "剧情", + "director" : "莱塞·霍尔斯道姆 L..." +}, { + "id" : "1292001", + "title" : "海上钢琴师", + "rating" : "9.3", + "releaseDate" : "1998", + "genre" : "剧情", + "director" : "朱塞佩·托纳多雷 G..." +}, { + "id" : "25662329", + "title" : "疯狂动物城", + "rating" : "9.3", + "releaseDate" : "2016", + "genre" : "喜剧", + "director" : "拜伦·霍华德 Byr..." +}, { + "id" : "3793023", + "title" : "三傻大闹宝莱坞", + "rating" : "9.2", + "releaseDate" : "2009", + "genre" : "剧情", + "director" : "拉库马·希拉尼 Ra..." +}, { + "id" : "2131459", + "title" : "机器人总动员", + "rating" : "9.3", + "releaseDate" : "2008", + "genre" : "科幻", + "director" : "安德鲁·斯坦顿 An..." +}, { + "id" : "1291549", + "title" : "放牛班的春天", + "rating" : "9.3", + "releaseDate" : "2004", + "genre" : "剧情", + "director" : "克里斯托夫·巴拉蒂 ..." +}, { + "id" : "1307914", + "title" : "无间道", + "rating" : "9.3", + "releaseDate" : "2002", + "genre" : "剧情", + "director" : "刘伟强 / 麦兆辉" +}, { + "id" : "1296141", + "title" : "控方证人", + "rating" : "9.6", + "releaseDate" : "1957", + "genre" : "剧情", + "director" : "比利·怀尔德 Bil..." +}, { + "id" : "20495023", + "title" : "寻梦环游记", + "rating" : "9.1", + "releaseDate" : "2017", + "genre" : "喜剧", + "director" : "李·昂克里奇 Lee..." +} ] \ No newline at end of file diff --git a/project/data/music_data.json b/project/data/music_data.json new file mode 100644 index 0000000..4566f31 --- /dev/null +++ b/project/data/music_data.json @@ -0,0 +1,81 @@ +[ { + "songId" : 30953009, + "name" : "See You Again", + "artists" : [ "Wiz Khalifa", "Charlie Puth" ], + "album" : "Furious 7: Original Motion Picture Soundtrack (Deluxe)", + "duration" : "3:49", + "platform" : "网易云音乐", + "artistsString" : "Wiz Khalifa, Charlie Puth" +}, { + "songId" : 491943377, + "name" : "See You Again", + "artists" : [ "Tyler, The Creator", "Kali Uchis" ], + "album" : "Flower Boy", + "duration" : "3:00", + "platform" : "网易云音乐", + "artistsString" : "Tyler, The Creator, Kali Uchis" +}, { + "songId" : 32009001, + "name" : "See You Again (Piano Demo Version)", + "artists" : [ "Charlie Puth" ], + "album" : "See You Again (Piano Demo)", + "duration" : "3:48", + "platform" : "网易云音乐", + "artistsString" : "Charlie Puth" +}, { + "songId" : 2154142235, + "name" : "牢大のSee You Again", + "artists" : [ "Apxl林" ], + "album" : "牢大の小曲", + "duration" : "1:35", + "platform" : "网易云音乐", + "artistsString" : "Apxl林" +}, { + "songId" : 1885677249, + "name" : "See You Again", + "artists" : [ "See You Again" ], + "album" : "Heaven's Voice: Pop Selection, Vol. 2", + "duration" : "3:48", + "platform" : "网易云音乐", + "artistsString" : "See You Again" +}, { + "songId" : 1893104207, + "name" : "See You Again", + "artists" : [ "王馨娴", "张雪峰" ], + "album" : "育才2017级6班毕业电影原声带", + "duration" : "3:47", + "platform" : "网易云音乐", + "artistsString" : "王馨娴, 张雪峰" +}, { + "songId" : 1418865944, + "name" : "See You Again(Piano Demo Version)(翻自 Charlie Puth)", + "artists" : [ "Mllano" ], + "album" : "科比·布莱恩特 Mamba never out", + "duration" : "3:51", + "platform" : "网易云音乐", + "artistsString" : "Mllano" +}, { + "songId" : 509115922, + "name" : "See You Again", + "artists" : [ "Charlie Puth", "Nick G" ], + "album" : "Ultimate Pop Hits, Vol. 12", + "duration" : "3:48", + "platform" : "网易云音乐", + "artistsString" : "Charlie Puth, Nick G" +}, { + "songId" : 2148709173, + "name" : "See You Again", + "artists" : [ "Tyler, The Creator" ], + "album" : "The Sunseeker", + "duration" : "4:33", + "platform" : "网易云音乐", + "artistsString" : "Tyler, The Creator" +}, { + "songId" : 526470566, + "name" : "SEE YOU AGAIN", + "artists" : [ "窦靖童" ], + "album" : "BTV跨年冰雪盛典", + "duration" : "4:49", + "platform" : "网易云音乐", + "artistsString" : "窦靖童" +} ] \ No newline at end of file diff --git a/project/data/news_data.json b/project/data/news_data.json new file mode 100644 index 0000000..87d3cdf --- /dev/null +++ b/project/data/news_data.json @@ -0,0 +1,101 @@ +[ { + "title" : "东西问|大窑遗址:50万年后被唤醒的文明密码", + "url" : "https://www.chinanews.com.cn/dxw/2026/05-27/10629810.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新社呼和浩特5月27日电 题:大窑遗址:50万年后被唤醒的文明密码" +}, { + "title" : "国务院成立山西长治山西通洲集团留神峪煤业有限公司“5·22”特别重大瓦斯爆炸事故调查组", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629814.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  5月22日19时29分许,山西省长治市沁源县山西通洲集团留神峪煤业有限公司井下发生瓦斯爆炸事故,造成重大人员伤亡。为认真贯彻落实习近平总书记重要指示精神,按照李强总理等中央领导同志批示要求,根据国家有关法律法规规定,国务院成立事故调查组,由应急管理部牵头,公安部、自然资源部、全国总工会、国家能源局、国家矿山安监局和山西省人民政府等相关方面参加,对山西长治山西通洲集团留神峪煤业有限公司“5·22”特别重大瓦斯爆炸事故进行调查。" +}, { + "title" : "东风着陆场完成最后一次全系统综合演练 准备就绪迎神二十一航天员回家", + "url" : "https://www.chinanews.com.cn/gn/2026/05-27/10629811.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  神舟二十一号航天员乘组将于近日乘神舟二十二号载人飞船返回地球。东风着陆场于27日晚完成第二次全系统综合演练,全面检验搜救回收任务组织指挥、协同配合以及应急保障等能力。" +}, { + "title" : "成都医保通报药房销售“回流药”、药店套取医保基金等问题", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629797.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网5月27日电 据“成都医保”微信公众号消息,成都市医疗保障局27日发布情况通报称,近日,国家医保局在开展定点零售药店违法违规使用医保基金专项飞检工作中,发现天府新区泰安堂医药连锁公司正兴丽园大药房销售“回流药”,郫都区康惠仁堂药店违规留存社会保障卡、协助套取医保基金等问题。对此,成都市医疗保障局高度重视,组成专门工作组,会同天府新区及郫都区医保、市场监管、卫健等部门,对涉事药店和人员进行调查核实。" +}, { + "title" : "中国企业助力柬埔寨橡胶产业转型升级", + "url" : "https://www.chinanews.com.cn/gj/2026/05-27/10629806.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新社金边5月27日电 (记者 杨强)由中国企业投资建设的美兰集团柬埔寨橡胶工厂( KIMS RUBBER)27日在柬埔寨特本克蒙省宣布投产。" +}, { + "title" : "哈萨克斯坦一架安-2飞机坠毁致1死1伤", + "url" : "https://www.chinanews.com.cn/gj/2026/05-27/10629775.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新社阿斯塔纳5月27日电 据哈通社27日消息,一架安-2型飞机当天在哈萨克斯坦巴甫洛达尔州坠毁,造成1人死亡、1人受伤。" +}, { + "title" : "重庆市纪委监委驻市交通运输委纪检监察组原一级巡视员贾如兴接受审查调查", + "url" : "https://www.chinanews.com.cn/gn/2026/05-27/10629746.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网5月27日电 据重庆市纪委监委消息,重庆市纪委监委驻市交通运输委纪检监察组原一级巡视员贾如兴涉嫌严重违纪违法,目前正接受重庆市纪委监委纪律审查和监察调查。" +}, { + "title" : "2026西藏“体育赛事季”活动将于6至9月举办", + "url" : "https://www.chinanews.com.cn/ty/2026/05-27/10629756.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网拉萨5月27日电 (李林)27日,西藏自治区人民政府新闻办公室举行2026“体育赛事季”活动新闻发布会。会议介绍,2026西藏“体育赛事季”活动将于6至9月举办。目前,列入2026“体育赛事季”活动计划的重点赛事活动有23场次。" +}, { + "title" : "中国哲学社会科学自主知识体系与田野调查学术沙龙暨白玛措博士新书分享会在拉萨举行", + "url" : "https://www.chinanews.com.cn/gn/2026/05-27/10629755.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网拉萨5月27日电 (李林)27日,中国哲学社会科学自主知识体系与田野调查学术沙龙暨白玛措博士新书分享会在西藏自治区社科院举行。活动以“长时段田野调查与中国自主知识体系构建”为主题,围绕西藏自治区社科院研究员、人类学博士白玛措新近出版的《大地艺术家:北方牧人》和《草原上的敬老院》两部专著展开深入研讨。" +}, { + "title" : "复旦大学“十大科技进展”评选结果揭晓", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629738.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网上海5月27日电 (记者 陈静)27日,在复旦大学第60届校庆科学报告会上,2025年度复旦大学“十大科技进展”评选结果揭晓。" +}, { + "title" : "去年以来北京警方破获涉医保基金类案件70余起", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629757.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网北京5月27日电 (记者 吕少威)记者27日从北京市公安局获悉,去年以来,北京警方依托“公安+行政”执法协作机制,围绕诈骗医保基金和非法倒卖医保回收药等违法犯罪行为,开展多波次打击整治行动,截至目前,全局共破获70余起相关案件,对400余名犯罪嫌疑人依法采取刑事强制措施,切实维护了北京医保基金安全。" +}, { + "title" : "菲律宾执法部门近来频频抓扣中国公民 中国驻菲使馆表示严重关切", + "url" : "https://www.chinanews.com.cn/hr/2026/05-27/10629760.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网马尼拉5月27日电 中国驻菲律宾大使馆发言人季凌鹏27日就菲执法部门近来频频抓扣中国公民表明立场。" +}, { + "title" : "香港广州暨菁荟在港成立 助力穗港青年成长", + "url" : "https://www.chinanews.com.cn/dwq/2026/05-27/10629768.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网香港5月27日电 香港广州暨菁荟成立大会暨第一届理事会就职仪式26日在港举行。" +}, { + "title" : "西藏芒康县举办现代生产生活技能县级复赛", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629731.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网拉萨5月27日电 (李林)26日,西藏昌都市芒康县举办第二届“红色昌都·振兴奋进”比赛活动现代生产生活技能县级复赛。比赛设主赛场和5个分赛场,涵盖清洁能源施工、电焊等11项现代技艺工种。" +}, { + "title" : "香港特区政府委任香港科技园公司、新田科技城公司董事局主席", + "url" : "https://www.chinanews.com.cn/dwq/2026/05-27/10629783.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网香港5月27日电 香港特区政府27日公布,经香港特区行政长官李家超批准,委任钟郝仪为香港科技园公司(科技园公司)董事局主席,自7月1日起生效,任期2年,接替任期将于6月30日届满的现任科技园公司董事局主席查毅超;委任查毅超为新田科技城公司董事局主席,自7月1日起生效,任期3年。" +}, { + "title" : "海南将以主宾省身份亮相第四届链博会", + "url" : "https://www.chinanews.com.cn/cj/2026/05-27/10629784.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网海口5月27日电 (记者 王子谦)第四届中国国际供应链促进博览会(简称“链博会”)将于6月22日至26日在北京举行。记者27日从海南省贸促会了解到,海南作为主宾省,将以“链上自贸港 共享新机遇”为主题,全方位推介海南自贸港政策制度优势、开放机遇与营商环境,精准邀约客商赴琼实地考察、洽谈合作。" +}, { + "title" : "《成都市养犬管理条例》获批:城市“人宠共处”难题的立法求解", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629786.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网成都5月27日电 (单鹏)《成都市养犬管理条例》27日经四川省十四届人大常委会第二十七次会议批准,将于今年8月1日起正式施行。" +}, { + "title" : "第二十届深圳国际金融博览会启幕 以AI赋能产融协同", + "url" : "https://www.chinanews.com.cn/cj/2026/05-27/10629794.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网深圳5月27日电 (记者 程景伟 索有为)由深圳市人民政府主办的第二十届深圳国际金融博览会27日在深圳会展中心(福田)开幕。博览会同期举办深交所全球投资者大会、深港金融合作委员会第四次会议、中国基金报全球资产管理论坛等系列活动。" +}, { + "title" : "山东省政协委员建言助推稳岗扩容提质 促进重点群体就业", + "url" : "https://www.chinanews.com.cn/cj/2026/05-27/10629730.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网济南5月27日电(王采怡)中国人民政治协商会议山东省委员会5月27日召开“助推稳岗扩容提质 促进重点群体就业”月度协商会。会上,政协委员、专家学者、基层代表围绕助力重点群体就业岗位扩容增量、破解中小微企业用工难题、优化金融服务保障等提出意见建议,并与山东省发展和改革委员会、省教育厅、省人力资源和社会保障厅、省退役军人事务厅负责同志互动交流,共商务实举措。会前,山东省政协通过网络议政等方式,收集意见建议410余条,“民声连线”访问量14万人次。" +}, { + "title" : "云南一医院推行“续诊”微改革 3日内一次免挂号复诊", + "url" : "https://www.chinanews.com.cn/sh/2026/05-27/10629795.shtml", + "publishTime" : "Wed, 27 May 2026 22", + "summary" : "  中新网昆明5月27日电 (陈静)昆明医科大学第一附属医院27日消息,为破解门诊重复挂号痛点、保障诊疗连续性,该医院将于5月28日在云南省级医疗机构率先推行门诊“续诊”微改革,出台“首诊后3日内一次免挂号续诊”举措,降低患者就医时间与经济成本。" +} ] \ No newline at end of file diff --git a/project/pom.xml b/project/pom.xml new file mode 100644 index 0000000..f257e35 --- /dev/null +++ b/project/pom.xml @@ -0,0 +1,105 @@ + + + 4.0.0 + + com.example + netease-spider + 1.0-SNAPSHOT + jar + + netease-spider + + + UTF-8 + 21 + 21 + + + + + com.fasterxml.jackson.core + jackson-databind + 2.16.1 + + + com.fasterxml.jackson.core + jackson-core + 2.16.1 + + + com.fasterxml.jackson.core + jackson-annotations + 2.16.1 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.16.1 + + + org.jsoup + jsoup + 1.17.2 + + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + com.belerweb + pinyin4j + 2.5.1 + + + org.jfree + jfreechart + 1.5.4 + + + org.xerial + sqlite-jdbc + 3.45.1.0 + + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.12.1 + + 21 + 21 + UTF-8 + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + com.example.Main + + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.1 + + + + \ No newline at end of file diff --git a/project/run.bat b/project/run.bat new file mode 100644 index 0000000..68cd142 --- /dev/null +++ b/project/run.bat @@ -0,0 +1,48 @@ +@echo off +chcp 65001 >nul +title 网络爬虫系统 + +echo ======================================== +echo 正在启动... +echo ======================================== +echo. + +cd /d "%~dp0" + +echo [1/3] 检查项目... +if not exist "pom.xml" ( + echo [错误] 找不到 pom.xml! + pause + exit /b 1 +) + +if not exist "apache-maven-3.9.14" ( + echo [错误] 找不到 apache-maven-3.9.14 文件夹! + pause + exit /b 1 +) + +echo [2/3] 编译项目... +call .\apache-maven-3.9.14\bin\mvn.cmd clean compile -DskipTests >nul 2>&1 +if %errorlevel% neq 0 ( + echo [错误] 编译失败! + echo. + echo 正在尝试重新下载依赖... + call .\apache-maven-3.9.14\bin\mvn.cmd dependency:resolve + if %errorlevel% neq 0 ( + echo [错误] 依赖下载失败! + pause + exit /b 1 + ) + call .\apache-maven-3.9.14\bin\mvn.cmd clean compile -DskipTests +) + +echo [3/3] 启动程序... +echo. +call .\apache-maven-3.9.14\bin\mvn.cmd exec:java -Dexec.mainClass="com.example.Main" + +echo. +echo ======================================== +echo 程序已退出 +echo ======================================== +pause diff --git a/project/src/main/java/com/example/Main.java b/project/src/main/java/com/example/Main.java new file mode 100644 index 0000000..2103426 --- /dev/null +++ b/project/src/main/java/com/example/Main.java @@ -0,0 +1,1084 @@ +package com.example; + +import com.example.analysis.BookAnalyzer; +import com.example.analysis.MovieAnalyzer; +import com.example.analysis.MusicAnalyzer; +import com.example.analysis.NewsAnalyzer; +import com.example.controller.SpiderController; +import com.example.core.CrawlResult; +import com.example.core.MusicSpider; +import com.example.model.BookItem; +import com.example.model.Chart; +import com.example.model.ChartItem; +import com.example.model.MovieItem; +import com.example.model.NewsItem; +import com.example.model.Song; +import com.example.spider.NetEaseMusicSpider; +import com.example.spider.book.DangdangBookSpider; +import com.example.spider.movie.DoubanMovieSpider; +import com.example.spider.news.ChinanewsSpider; +import com.example.storage.DataExporter; +import com.example.storage.DatabaseManager; +import com.example.chart.JFreeChartGenerator; +import com.example.view.ConsoleView; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class Main { + + private static List currentMusicData = new ArrayList<>(); + private static List currentNewsData = new ArrayList<>(); + private static List currentBookData = new ArrayList<>(); + private static List currentMovieData = new ArrayList<>(); + + private static ConsoleView consoleView; + private static SpiderController spiderController; + + static { + consoleView = new ConsoleView(); + spiderController = new SpiderController(consoleView); + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in, "UTF-8"); + while (true) { + printMainMenu(); + + System.out.print("\n请选择平台编号(输入0退出): "); + String input = scanner.nextLine().trim(); + + if ("0".equals(input)) { + System.out.println("\n感谢使用,再见!"); + break; + } + + int choice; + try { + choice = Integer.parseInt(input); + } catch (NumberFormatException e) { + System.out.println("[ERROR] 请输入有效的数字!\n"); + continue; + } + + switch (choice) { + case 1: + spiderController.setStrategy(new NetEaseMusicSpider()); + handleMusicPlatform(new NetEaseMusicSpider(), scanner); + break; + case 2: + spiderController.setStrategy(new ChinanewsSpider()); + handleNewsPlatform(new ChinanewsSpider(), scanner); + break; + case 3: + spiderController.setStrategy(new DangdangBookSpider()); + handleBookPlatform(new DangdangBookSpider(), scanner); + break; + case 4: + spiderController.setStrategy(new DoubanMovieSpider()); + handleMoviePlatform(new DoubanMovieSpider(), scanner); + break; + case 5: + handleDataAnalysis(scanner); + break; + default: + System.out.println("无效的选择,请重新输入!\n"); + } + } + + scanner.close(); + } + + private static void printMainMenu() { + System.out.println("=========================================="); + System.out.println(" 爬虫系统主菜单"); + System.out.println("=========================================="); + System.out.println("\n【音乐类】"); + System.out.println(" 1. 网易云音乐"); + + System.out.println("\n【新闻类】"); + System.out.println(" 2. 中国新闻网"); + + System.out.println("\n【图书类】"); + System.out.println(" 3. 当当图书"); + + System.out.println("\n【影视类】"); + System.out.println(" 4. 豆瓣电影"); + + System.out.println("\n【数据分析】"); + System.out.println(" 5. 数据存储与分析"); + + System.out.println("\n=========================================="); + System.out.println(" 输入编号选择平台 | 输入 0 退出"); + System.out.println("=========================================="); + } + + private static void handleMusicPlatform(MusicSpider spider, Scanner scanner) { + while (true) { + System.out.println("\n=========================================="); + System.out.println(" 网易云音乐 - 功能菜单"); + System.out.println("=========================================="); + System.out.println(" 1. 搜索歌曲"); + System.out.println(" 2. 热门榜单"); + System.out.println(" 3. 榜单详情"); + System.out.println(" 4. 返回主菜单"); + System.out.println("=========================================="); + System.out.print("请选择功能(1-4): "); + + String input = scanner.nextLine().trim(); + + try { + int funcChoice = Integer.parseInt(input); + + switch (funcChoice) { + case 1: + searchMusicSongs(spider, scanner); + break; + case 2: + getMusicChartList(spider); + break; + case 3: + getMusicChartDetail(spider, scanner); + break; + case 4: + return; + default: + System.out.println("[ERROR] 无效的选择,请输入1-4!"); + } + } catch (NumberFormatException e) { + System.out.println("[ERROR] 请输入有效的数字!"); + } + } + } + + private static void searchMusicSongs(MusicSpider spider, Scanner scanner) { + System.out.print("\n请输入歌曲名或歌手名: "); + String keyword = scanner.nextLine().trim(); + + if (keyword.isEmpty()) { + System.out.println("关键词不能为空!"); + return; + } + + System.out.println("\n正在搜索 [" + keyword + "]..."); + + try { + CrawlResult> result = spider.searchSongs(keyword); + + if (result.isSuccess()) { + List songs = result.getData(); + System.out.println("\n搜索成功!共找到 " + songs.size() + " 歌曲:"); + System.out.println("------------------------------------------"); + + currentMusicData.clear(); + for (int i = 0; i < songs.size(); i++) { + Song song = songs.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("歌曲名: " + song.getName()); + System.out.println("歌手: " + String.join("/", song.getArtists())); + System.out.println("专辑: " + song.getAlbum()); + System.out.println("时长: " + song.getDuration()); + System.out.println("ID: " + song.getSongId()); + currentMusicData.add(song); + } + } else { + System.out.println("搜索失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("搜索过程发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void getMusicChartList(MusicSpider spider) { + System.out.println("\n正在获取热门榜单列表..."); + + try { + CrawlResult> result = spider.getChartList(); + + if (result.isSuccess()) { + List charts = result.getData(); + System.out.println("\n获取成功!共找到 " + charts.size() + " 个榜单:"); + System.out.println("------------------------------------------"); + + for (int i = 0; i < charts.size(); i++) { + Chart chart = charts.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("榜单ID: " + chart.getChartId()); + System.out.println("榜单名称: " + chart.getName()); + System.out.println("类型: " + chart.getType().getDisplayName()); + System.out.println("更新时间: " + chart.getUpdateTime()); + } + } else { + System.out.println("获取榜单列表失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("获取榜单列表发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void getMusicChartDetail(MusicSpider spider, Scanner scanner) { + System.out.println("\n正在获取热门榜单列表..."); + + List charts = null; + try { + CrawlResult> result = spider.getChartList(); + + if (result.isSuccess()) { + charts = result.getData(); + System.out.println("\n获取成功!共找到 " + charts.size() + " 个榜单:"); + System.out.println("------------------------------------------"); + + for (int i = 0; i < charts.size(); i++) { + Chart chart = charts.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("榜单名称: " + chart.getName()); + System.out.println("类型: " + chart.getType().getDisplayName()); + System.out.println("更新时间: " + chart.getUpdateTime()); + } + } else { + System.out.println("获取榜单列表失败: " + result.getMessage()); + return; + } + } catch (Exception e) { + System.out.println("获取榜单列表发生错误: " + e.getMessage()); + return; + } + + System.out.println("\n------------------------------------------"); + System.out.print("请选择要查看的榜单序号(1-" + charts.size() + "): "); + String input = scanner.nextLine().trim(); + + int index; + try { + index = Integer.parseInt(input) - 1; + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + return; + } + + if (index < 0 || index >= charts.size()) { + System.out.println("无效的选择!"); + return; + } + + Chart selectedChart = charts.get(index); + String chartId = selectedChart.getChartId(); + + System.out.print("请输入获取歌曲数量(默认20): "); + String limitStr = scanner.nextLine().trim(); + int limit = limitStr.isEmpty() ? 20 : Integer.parseInt(limitStr); + + System.out.println("\n正在获取榜单详情 [" + selectedChart.getName() + "]..."); + + try { + CrawlResult result = spider.getChartDetail(chartId, limit); + + if (result.isSuccess()) { + Chart chart = result.getData(); + System.out.println("\n获取成功!"); + System.out.println("------------------------------------------"); + System.out.println("榜单名称: " + chart.getName()); + System.out.println("类型: " + chart.getType().getDisplayName()); + System.out.println("更新时间: " + chart.getUpdateTime()); + System.out.println("歌曲总数: " + chart.getTotalCount()); + System.out.println("\n榜单排名:"); + + List items = chart.getItems(); + for (int i = 0; i < Math.min(items.size(), limit); i++) { + ChartItem item = items.get(i); + System.out.println("\n[" + item.getRank() + "] " + item.getSongName()); + System.out.println(" 歌手: " + String.join("/", item.getArtists())); + System.out.println(" 专辑: " + item.getAlbum()); + } + } else { + System.out.println("获取榜单详情失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("获取榜单详情发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void handleNewsPlatform(ChinanewsSpider spider, Scanner scanner) { + while (true) { + System.out.println("\n=========================================="); + System.out.println(" 中国新闻网 - 功能菜单"); + System.out.println("=========================================="); + System.out.println(" 1. 获取滚动新闻"); + System.out.println(" 2. 返回主菜单"); + System.out.println("=========================================="); + System.out.print("请选择功能(1-2): "); + + String input = scanner.nextLine().trim(); + + try { + int funcChoice = Integer.parseInt(input); + + switch (funcChoice) { + case 1: + getNewsList(spider); + break; + case 2: + return; + default: + System.out.println("[ERROR] 无效的选择,请输入1-2!"); + } + } catch (NumberFormatException e) { + System.out.println("[ERROR] 请输入有效的数字!"); + } + } + } + + private static void getNewsList(ChinanewsSpider spider) { + System.out.println("\n正在获取滚动新闻..."); + + try { + CrawlResult> result = spider.getScrollNews(); + + if (result.isSuccess()) { + List newsList = result.getData(); + System.out.println("\n获取成功!共找到 " + newsList.size() + " 条新闻:"); + System.out.println("------------------------------------------"); + + currentNewsData.clear(); + for (int i = 0; i < newsList.size(); i++) { + NewsItem news = newsList.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("标题: " + news.getTitle()); + System.out.println("时间: " + news.getPublishTime()); + System.out.println("链接: " + news.getUrl()); + System.out.println("摘要: " + (news.getSummary().length() > 100 ? news.getSummary().substring(0, 100) + "..." : news.getSummary())); + currentNewsData.add(news); + } + } else { + System.out.println("获取新闻失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("获取新闻发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void handleBookPlatform(DangdangBookSpider spider, Scanner scanner) { + while (true) { + System.out.println("\n=========================================="); + System.out.println(" 当当图书 - 功能菜单"); + System.out.println("=========================================="); + System.out.println(" 1. 搜索图书"); + System.out.println(" 2. 热门榜单"); + System.out.println(" 3. 返回主菜单"); + System.out.println("=========================================="); + System.out.print("请选择功能(1-3): "); + + String input = scanner.nextLine().trim(); + + try { + int funcChoice = Integer.parseInt(input); + + switch (funcChoice) { + case 1: + searchBooks(spider, scanner); + break; + case 2: + getBookCharts(spider, scanner); + break; + case 3: + return; + default: + System.out.println("[ERROR] 无效的选择,请输入1-3!"); + } + } catch (NumberFormatException e) { + System.out.println("[ERROR] 请输入有效的数字!"); + } + } + } + + private static void searchBooks(DangdangBookSpider spider, Scanner scanner) { + System.out.print("\n请输入图书名称或作者: "); + String keyword = scanner.nextLine().trim(); + + if (keyword.isEmpty()) { + System.out.println("关键词不能为空!"); + return; + } + + System.out.println("\n正在搜索 [" + keyword + "]..."); + + try { + CrawlResult> result = spider.searchBooks(keyword); + + if (result.isSuccess()) { + List books = result.getData(); + System.out.println("\n搜索成功!共找到 " + books.size() + " 本图书:"); + System.out.println("------------------------------------------"); + + currentBookData.clear(); + for (int i = 0; i < books.size(); i++) { + BookItem book = books.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("书名: " + book.getTitle()); + System.out.println("作者: " + book.getAuthor()); + System.out.println("评分: " + book.getRating()); + System.out.println("出版社: " + book.getPublisher()); + currentBookData.add(book); + } + } else { + System.out.println("搜索失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("搜索过程发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void getBookCharts(DangdangBookSpider spider, Scanner scanner) { + System.out.println("\n正在获取热门榜单..."); + + try { + CrawlResult> result = spider.getHotBooks(); + + if (result.isSuccess()) { + List books = result.getData(); + System.out.println("\n获取成功!共找到 " + books.size() + " 本热门图书:"); + System.out.println("------------------------------------------"); + + currentBookData.clear(); + for (int i = 0; i < books.size(); i++) { + BookItem book = books.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("书名: " + book.getTitle()); + System.out.println("作者: " + book.getAuthor()); + System.out.println("评分: " + book.getRating()); + System.out.println("出版社: " + book.getPublisher()); + currentBookData.add(book); + } + } else { + System.out.println("获取榜单失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("获取榜单发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void handleMoviePlatform(DoubanMovieSpider spider, Scanner scanner) { + while (true) { + System.out.println("\n=========================================="); + System.out.println(" 豆瓣电影 - 功能菜单"); + System.out.println("=========================================="); + System.out.println(" 1. 搜索电影"); + System.out.println(" 2. 热门电影"); + System.out.println(" 3. 返回主菜单"); + System.out.println("=========================================="); + System.out.print("请选择功能(1-3): "); + + String input = scanner.nextLine().trim(); + + try { + int funcChoice = Integer.parseInt(input); + + switch (funcChoice) { + case 1: + searchMovies(spider, scanner); + break; + case 2: + getHotMovies(spider); + break; + case 3: + return; + default: + System.out.println("[ERROR] 无效的选择,请输入1-3!"); + } + } catch (NumberFormatException e) { + System.out.println("[ERROR] 请输入有效的数字!"); + } + } + } + + private static void searchMovies(DoubanMovieSpider spider, Scanner scanner) { + System.out.print("\n请输入电影名称: "); + String keyword = scanner.nextLine().trim(); + + if (keyword.isEmpty()) { + System.out.println("关键词不能为空!"); + return; + } + + System.out.println("\n正在搜索 [" + keyword + "]..."); + + try { + CrawlResult> result = spider.searchMovies(keyword); + + if (result.isSuccess()) { + List movies = result.getData(); + System.out.println("\n搜索成功!共找到 " + movies.size() + " 部电影:"); + System.out.println("------------------------------------------"); + + currentMovieData.clear(); + for (int i = 0; i < movies.size(); i++) { + MovieItem movie = movies.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("片名: " + movie.getTitle()); + System.out.println("评分: " + movie.getRating()); + System.out.println("年份: " + movie.getReleaseDate()); + System.out.println("类型: " + movie.getGenre()); + System.out.println("导演: " + movie.getDirector()); + currentMovieData.add(movie); + } + } else { + System.out.println("搜索失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("搜索过程发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void getHotMovies(DoubanMovieSpider spider) { + System.out.println("\n正在获取热门电影..."); + + try { + CrawlResult> result = spider.getHotMovies(); + + if (result.isSuccess()) { + List movies = result.getData(); + System.out.println("\n获取成功!共找到 " + movies.size() + " 部热门电影:"); + System.out.println("------------------------------------------"); + + currentMovieData.clear(); + for (int i = 0; i < movies.size(); i++) { + MovieItem movie = movies.get(i); + System.out.println("\n[" + (i + 1) + "]"); + System.out.println("片名: " + movie.getTitle()); + System.out.println("评分: " + movie.getRating()); + System.out.println("年份: " + movie.getReleaseDate()); + System.out.println("类型: " + movie.getGenre()); + currentMovieData.add(movie); + } + } else { + System.out.println("获取热门电影失败: " + result.getMessage()); + } + } catch (Exception e) { + System.out.println("获取热门电影发生错误: " + e.getMessage()); + } + + System.out.println("\n------------------------------------------"); + } + + private static void handleDataAnalysis(Scanner scanner) { + while (true) { + System.out.println("\n=========================================="); + System.out.println(" 数据存储与分析系统"); + System.out.println("=========================================="); + System.out.println(" 1. 音乐数据分析"); + System.out.println(" 2. 图书数据分析"); + System.out.println(" 3. 影视数据分析"); + System.out.println(" 4. 新闻数据分析"); + System.out.println(" 5. 生成JFreeChart图表(图片)"); + System.out.println(" 6. 导出当前数据为CSV"); + System.out.println(" 7. 导出当前数据为JSON"); + System.out.println(" 8. 保存数据到SQLite数据库"); + System.out.println(" 9. 从数据库读取数据"); + System.out.println(" 10. 返回主菜单"); + System.out.println("=========================================="); + System.out.print("请选择功能(1-10): "); + + String input = scanner.nextLine().trim(); + + try { + int funcChoice = Integer.parseInt(input); + + switch (funcChoice) { + case 1: + analyzeMusicData(); + break; + case 2: + analyzeBookData(); + break; + case 3: + analyzeMovieData(); + break; + case 4: + analyzeNewsData(); + break; + case 5: + generateJFreeChart(scanner); + break; + case 6: + exportDataToCsv(scanner); + break; + case 7: + exportDataToJson(scanner); + break; + case 8: + saveToDatabase(scanner); + break; + case 9: + loadFromDatabase(scanner); + break; + case 10: + return; + default: + System.out.println("无效的选择,请输入1-10!"); + } + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + } + } + } + + @SuppressWarnings("unchecked") + private static void analyzeMusicData() { + if (currentMusicData.isEmpty()) { + System.out.println("\n当前没有音乐数据,请先搜索歌曲!"); + return; + } + + System.out.println("\n=========================================="); + System.out.println(" 音乐数据分析报告"); + System.out.println("=========================================="); + + List songs = (List) (List) currentMusicData; + MusicAnalyzer.AnalysisResult result = MusicAnalyzer.analyzeSongs(songs); + result.print(); + + System.out.println("\n=========================================="); + } + + @SuppressWarnings("unchecked") + private static void analyzeBookData() { + if (currentBookData.isEmpty()) { + System.out.println("\n当前没有图书数据,请先搜索图书!"); + return; + } + + System.out.println("\n=========================================="); + System.out.println(" 图书数据分析报告"); + System.out.println("=========================================="); + + List books = (List) (List) currentBookData; + BookAnalyzer.AnalysisResult result = BookAnalyzer.analyzeBooks(books); + result.print(); + + System.out.println("\n=========================================="); + } + + @SuppressWarnings("unchecked") + private static void analyzeMovieData() { + if (currentMovieData.isEmpty()) { + System.out.println("\n当前没有影视数据,请先搜索电影!"); + return; + } + + System.out.println("\n=========================================="); + System.out.println(" 影视数据分析报告"); + System.out.println("=========================================="); + + List movies = (List) (List) currentMovieData; + MovieAnalyzer.AnalysisResult result = MovieAnalyzer.analyzeMovies(movies); + result.print(); + + System.out.println("\n=========================================="); + } + + @SuppressWarnings("unchecked") + private static void analyzeNewsData() { + if (currentNewsData.isEmpty()) { + System.out.println("\n当前没有新闻数据,请先获取新闻!"); + return; + } + + System.out.println("\n=========================================="); + System.out.println(" 新闻数据分析报告"); + System.out.println("=========================================="); + + List newsList = (List) (List) currentNewsData; + NewsAnalyzer.AnalysisResult result = NewsAnalyzer.analyzeNews(newsList); + result.print(); + + System.out.println("\n=========================================="); + } + + private static void exportDataToCsv(Scanner scanner) { + System.out.println("\n请选择要导出的数据类型:"); + System.out.println(" 1. 音乐数据"); + System.out.println(" 2. 新闻数据"); + System.out.println(" 3. 图书数据"); + System.out.println(" 4. 影视数据"); + System.out.print("请选择(1-4): "); + + String input = scanner.nextLine().trim(); + + try { + int choice = Integer.parseInt(input); + String fileName; + + switch (choice) { + case 1: + fileName = "data/music_data.csv"; + DataExporter.exportToCsv(currentMusicData, fileName); + System.out.println("音乐数据导出成功: " + fileName); + break; + case 2: + fileName = "data/news_data.csv"; + DataExporter.exportToCsv(currentNewsData, fileName); + System.out.println("新闻数据导出成功: " + fileName); + break; + case 3: + fileName = "data/book_data.csv"; + DataExporter.exportToCsv(currentBookData, fileName); + System.out.println("图书数据导出成功: " + fileName); + break; + case 4: + fileName = "data/movie_data.csv"; + DataExporter.exportToCsv(currentMovieData, fileName); + System.out.println("影视数据导出成功: " + fileName); + break; + default: + System.out.println("无效的选择!"); + return; + } + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + } catch (Exception e) { + System.out.println("数据导出失败: " + e.getMessage()); + } + } + + private static void exportDataToJson(Scanner scanner) { + System.out.println("\n请选择要导出的数据类型:"); + System.out.println(" 1. 音乐数据"); + System.out.println(" 2. 新闻数据"); + System.out.println(" 3. 图书数据"); + System.out.println(" 4. 影视数据"); + System.out.print("请选择(1-4): "); + + String input = scanner.nextLine().trim(); + + try { + int choice = Integer.parseInt(input); + String fileName; + + switch (choice) { + case 1: + fileName = "data/music_data.json"; + DataExporter.exportToJson(currentMusicData, fileName); + System.out.println("音乐数据导出成功: " + fileName); + break; + case 2: + fileName = "data/news_data.json"; + DataExporter.exportToJson(currentNewsData, fileName); + System.out.println("新闻数据导出成功: " + fileName); + break; + case 3: + fileName = "data/book_data.json"; + DataExporter.exportToJson(currentBookData, fileName); + System.out.println("图书数据导出成功: " + fileName); + break; + case 4: + fileName = "data/movie_data.json"; + DataExporter.exportToJson(currentMovieData, fileName); + System.out.println("影视数据导出成功: " + fileName); + break; + default: + System.out.println("无效的选择!"); + return; + } + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + } catch (Exception e) { + System.out.println("数据导出失败: " + e.getMessage()); + } + } + + private static void generateJFreeChart(Scanner scanner) { + System.out.println("\n请选择要生成图表的数据类型:"); + System.out.println(" 1. 电影数据"); + System.out.println(" 2. 图书数据"); + System.out.println(" 3. 音乐数据"); + System.out.println(" 4. 新闻数据"); + System.out.print("请选择(1-4): "); + + String input = scanner.nextLine().trim(); + + try { + int choice = Integer.parseInt(input); + + switch (choice) { + case 1: + generateMovieCharts(); + break; + case 2: + generateBookCharts(); + break; + case 3: + generateMusicCharts(); + break; + case 4: + generateNewsCharts(); + break; + default: + System.out.println("无效的选择!"); + } + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + } catch (Exception e) { + System.out.println("生成图表失败: " + e.getMessage()); + } + } + + @SuppressWarnings("unchecked") + private static void generateMovieCharts() throws Exception { + if (currentMovieData.isEmpty()) { + System.out.println("\n当前没有电影数据,请先搜索或获取热门电影!"); + return; + } + + List movies = (List) (List) currentMovieData; + MovieAnalyzer.AnalysisResult result = MovieAnalyzer.analyzeMovies(movies); + + JFreeChartGenerator.generateMovieCharts( + result.genreDistribution, + result.ratingDistribution, + result.topDirectors + ); + + System.out.println("\n[INFO] 电影JFreeChart图表已生成!"); + } + + @SuppressWarnings("unchecked") + private static void generateBookCharts() throws Exception { + if (currentBookData.isEmpty()) { + System.out.println("\n当前没有图书数据,请先搜索或获取热门图书!"); + return; + } + + List books = (List) (List) currentBookData; + BookAnalyzer.AnalysisResult result = BookAnalyzer.analyzeBooks(books); + + JFreeChartGenerator.generateBookCharts( + result.priceDistribution, + result.topAuthors + ); + + System.out.println("\n[INFO] 图书JFreeChart图表已生成!"); + } + + @SuppressWarnings("unchecked") + private static void generateMusicCharts() throws Exception { + if (currentMusicData.isEmpty()) { + System.out.println("\n当前没有音乐数据,请先搜索歌曲!"); + return; + } + + List songs = (List) (List) currentMusicData; + MusicAnalyzer.AnalysisResult result = MusicAnalyzer.analyzeSongs(songs); + + JFreeChartGenerator.generateMusicCharts( + result.durationDistribution, + result.topArtists + ); + + System.out.println("\n[INFO] 音乐JFreeChart图表已生成!"); + } + + @SuppressWarnings("unchecked") + private static void generateNewsCharts() throws Exception { + if (currentNewsData.isEmpty()) { + System.out.println("\n当前没有新闻数据,请先获取新闻!"); + return; + } + + List newsList = (List) (List) currentNewsData; + NewsAnalyzer.AnalysisResult result = NewsAnalyzer.analyzeNews(newsList); + + JFreeChartGenerator.generateNewsCharts( + result.positiveCount, + result.negativeCount, + result.neutralCount, + result.topTitleWords + ); + + System.out.println("\n[INFO] 新闻JFreeChart图表已生成!"); + } + + private static void saveToDatabase(Scanner scanner) { + System.out.println("\n请选择要保存到数据库的数据类型:"); + System.out.println(" 1. 电影数据"); + System.out.println(" 2. 图书数据"); + System.out.println(" 3. 音乐数据"); + System.out.println(" 4. 新闻数据"); + System.out.println(" 5. 全部数据"); + System.out.print("请选择(1-5): "); + + String input = scanner.nextLine().trim(); + + DatabaseManager dbManager = new DatabaseManager(); + + try { + dbManager.connect(); + + int choice = Integer.parseInt(input); + + switch (choice) { + case 1: + saveMoviesToDb(dbManager); + break; + case 2: + saveBooksToDb(dbManager); + break; + case 3: + saveSongsToDb(dbManager); + break; + case 4: + saveNewsToDb(dbManager); + break; + case 5: + saveMoviesToDb(dbManager); + saveBooksToDb(dbManager); + saveSongsToDb(dbManager); + saveNewsToDb(dbManager); + break; + default: + System.out.println("无效的选择!"); + } + + System.out.println("\n[OK] 数据保存成功!"); + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + } catch (Exception e) { + System.out.println("保存数据失败: " + e.getMessage()); + } finally { + dbManager.disconnect(); + } + } + + @SuppressWarnings("unchecked") + private static void saveMoviesToDb(DatabaseManager dbManager) throws Exception { + if (currentMovieData.isEmpty()) { + System.out.println("当前没有电影数据"); + return; + } + List movies = (List) (List) currentMovieData; + dbManager.insertMovies(movies); + } + + @SuppressWarnings("unchecked") + private static void saveBooksToDb(DatabaseManager dbManager) throws Exception { + if (currentBookData.isEmpty()) { + System.out.println("当前没有图书数据"); + return; + } + List books = (List) (List) currentBookData; + dbManager.insertBooks(books); + } + + @SuppressWarnings("unchecked") + private static void saveSongsToDb(DatabaseManager dbManager) throws Exception { + if (currentMusicData.isEmpty()) { + System.out.println("当前没有音乐数据"); + return; + } + List songs = (List) (List) currentMusicData; + dbManager.insertSongs(songs); + } + + @SuppressWarnings("unchecked") + private static void saveNewsToDb(DatabaseManager dbManager) throws Exception { + if (currentNewsData.isEmpty()) { + System.out.println("当前没有新闻数据"); + return; + } + List newsList = (List) (List) currentNewsData; + dbManager.insertNewsList(newsList); + } + + private static void loadFromDatabase(Scanner scanner) { + System.out.println("\n请选择要从数据库读取的数据类型:"); + System.out.println(" 1. 电影数据"); + System.out.println(" 2. 图书数据"); + System.out.println(" 3. 音乐数据"); + System.out.println(" 4. 新闻数据"); + System.out.println(" 5. 全部数据"); + System.out.print("请选择(1-5): "); + + String input = scanner.nextLine().trim(); + + DatabaseManager dbManager = new DatabaseManager(); + + try { + dbManager.connect(); + + int choice = Integer.parseInt(input); + + switch (choice) { + case 1: + loadMoviesFromDb(dbManager); + break; + case 2: + loadBooksFromDb(dbManager); + break; + case 3: + loadSongsFromDb(dbManager); + break; + case 4: + loadNewsFromDb(dbManager); + break; + case 5: + loadMoviesFromDb(dbManager); + loadBooksFromDb(dbManager); + loadSongsFromDb(dbManager); + loadNewsFromDb(dbManager); + break; + default: + System.out.println("无效的选择!"); + } + + System.out.println("\n[OK] 数据读取成功!"); + } catch (NumberFormatException e) { + System.out.println("请输入有效的数字!"); + } catch (Exception e) { + System.out.println("读取数据失败: " + e.getMessage()); + } finally { + dbManager.disconnect(); + } + } + + private static void loadMoviesFromDb(DatabaseManager dbManager) throws Exception { + List movies = dbManager.getAllMovies(); + currentMovieData.clear(); + currentMovieData.addAll(movies); + System.out.println("从数据库读取 " + movies.size() + " 条电影数据"); + } + + private static void loadBooksFromDb(DatabaseManager dbManager) throws Exception { + List books = dbManager.getAllBooks(); + currentBookData.clear(); + currentBookData.addAll(books); + System.out.println("从数据库读取 " + books.size() + " 条图书数据"); + } + + private static void loadSongsFromDb(DatabaseManager dbManager) throws Exception { + List songs = dbManager.getAllSongs(); + currentMusicData.clear(); + currentMusicData.addAll(songs); + System.out.println("从数据库读取 " + songs.size() + " 条歌曲数据"); + } + + private static void loadNewsFromDb(DatabaseManager dbManager) throws Exception { + List newsList = dbManager.getAllNews(); + currentNewsData.clear(); + currentNewsData.addAll(newsList); + System.out.println("从数据库读取 " + newsList.size() + " 条新闻数据"); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/analysis/BookAnalyzer.java b/project/src/main/java/com/example/analysis/BookAnalyzer.java new file mode 100644 index 0000000..bb26d82 --- /dev/null +++ b/project/src/main/java/com/example/analysis/BookAnalyzer.java @@ -0,0 +1,173 @@ +package com.example.analysis; + +import com.example.model.BookItem; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 图书数据分析器 + */ +public class BookAnalyzer { + + public static AnalysisResult analyzeBooks(List books) { + AnalysisResult result = new AnalysisResult(); + + if (books == null || books.isEmpty()) { + return result; + } + + result.totalCount = books.size(); + + // 数据清洗 + List cleanedBooks = books.stream() + .map(BookAnalyzer::cleanBookItem) + .filter(b -> !b.getTitle().isEmpty()) + .collect(Collectors.toList()); + + result.cleanedCount = cleanedBooks.size(); + + // 统计作者出现次数 + Map authorCount = cleanedBooks.stream() + .filter(b -> b.getAuthor() != null && !b.getAuthor().isEmpty()) + .collect(Collectors.groupingBy( + b -> b.getAuthor(), + Collectors.summingInt(b -> 1) + )); + result.topAuthors = authorCount.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(5) + .collect(Collectors.toList()); + + // 统计出版社 + Map publisherCount = cleanedBooks.stream() + .filter(b -> b.getPublisher() != null && !b.getPublisher().isEmpty()) + .collect(Collectors.groupingBy( + b -> b.getPublisher(), + Collectors.summingInt(b -> 1) + )); + result.topPublishers = publisherCount.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(5) + .collect(Collectors.toList()); + + // 计算评分统计 + List validRatings = cleanedBooks.stream() + .map(b -> { + try { + return Double.parseDouble(b.getRating()); + } catch (Exception e) { + return null; + } + }) + .filter(Objects::nonNull) + .sorted() + .collect(Collectors.toList()); + + result.ratingCount = validRatings.size(); + if (!validRatings.isEmpty()) { + result.averageRating = String.format("%.2f", validRatings.stream().mapToDouble(Double::doubleValue).average().orElse(0)); + result.minRating = String.format("%.1f", validRatings.get(0)); + result.maxRating = String.format("%.1f", validRatings.get(validRatings.size() - 1)); + } else { + result.averageRating = "N/A"; + result.minRating = "N/A"; + result.maxRating = "N/A"; + } + + // 统计价格范围 + Map priceDistribution = new LinkedHashMap<>(); + priceDistribution.put("50元以下", 0); + priceDistribution.put("50-100元", 0); + priceDistribution.put("100-200元", 0); + priceDistribution.put("200元以上", 0); + + int totalPrice = 0; + int priceCount = 0; + for (BookItem book : cleanedBooks) { + try { + double price = Double.parseDouble(book.getPrice()); + totalPrice += price; + priceCount++; + + if (price < 50) { + priceDistribution.merge("50元以下", 1, Integer::sum); + } else if (price <= 100) { + priceDistribution.merge("50-100元", 1, Integer::sum); + } else if (price <= 200) { + priceDistribution.merge("100-200元", 1, Integer::sum); + } else { + priceDistribution.merge("200元以上", 1, Integer::sum); + } + } catch (Exception e) { + // ignore + } + } + result.priceDistribution = priceDistribution; + result.averagePrice = priceCount > 0 ? String.format("%.2f", (double) totalPrice / priceCount) : "N/A"; + + return result; + } + + private static BookItem cleanBookItem(BookItem item) { + String title = DataCleaner.trimAndNormalize(item.getTitle()); + String author = DataCleaner.trimAndNormalize(item.getAuthor()); + String publisher = DataCleaner.trimAndNormalize(item.getPublisher()); + String rating = DataCleaner.handleMissingValue(item.getRating(), "0"); + String price = DataCleaner.handleMissingValue(item.getPrice(), "0"); + + return new BookItem(title, author, publisher, rating, price); + } + + public static class AnalysisResult { + public int totalCount; + public int cleanedCount; + public List> topAuthors; + public List> topPublishers; + public String averageRating; + public String minRating; + public String maxRating; + public int ratingCount; + public Map priceDistribution; + public String averagePrice; + + public void print() { + System.out.println("\n============================================================"); + System.out.println(" [ 图书数据分析报告 ]"); + System.out.println("============================================================"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 基本统计 ]"); + System.out.println("------------------------------------------------------------"); + System.out.printf(" %-22s | %12s%n", "项目", "数值"); + System.out.printf(" %-22s | %12d%n", "原始数据量", totalCount); + System.out.printf(" %-22s | %12d%n", "清洗后数据量", cleanedCount); + System.out.printf(" %-22s | %12s%n", "平均评分", averageRating); + System.out.printf(" %-22s | %12s%n", "最低评分", minRating); + System.out.printf(" %-22s | %12s%n", "最高评分", maxRating); + System.out.printf(" %-22s | %12s%n", "平均价格", averagePrice + " 元"); + System.out.println("------------------------------------------------------------"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 热门作者 TOP5 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextBarChart( + topAuthors != null ? topAuthors.stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) : new HashMap<>(), 30)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 热门出版社 TOP5 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextBarChart( + topPublishers != null ? topPublishers.stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) : new HashMap<>(), 30)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 价格分布 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextPieChart(priceDistribution != null ? priceDistribution : new HashMap<>())); + + System.out.println("\n============================================================"); + } + } +} diff --git a/project/src/main/java/com/example/analysis/ChartGenerator.java b/project/src/main/java/com/example/analysis/ChartGenerator.java new file mode 100644 index 0000000..45a97f0 --- /dev/null +++ b/project/src/main/java/com/example/analysis/ChartGenerator.java @@ -0,0 +1,331 @@ +package com.example.analysis; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * 图表生成工具类 + * 支持文本图表和HTML图表生成 + */ +public class ChartGenerator { + + private static final String HTML_TEMPLATE = """ + + + + + 数据分析报告 + + + + +

%s

+
+ %s +
+ %s + + + + """; + + /** + * 生成文本柱状图 + */ + public static String generateTextBarChart(Map data, int maxBarWidth) { + if (data == null || data.isEmpty()) { + return " [无数据]"; + } + + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + + int maxValue = data.values().stream().max(Integer::compare).orElse(1); + int maxKeyLen = data.keySet().stream().mapToInt(k -> k.length()).max().orElse(10); + int keyWidth = Math.min(Math.max(maxKeyLen, 8), 20); + + List> sorted = data.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(10) + .toList(); + + int maxCountWidth = sorted.stream().mapToInt(e -> String.valueOf(e.getValue()).length()).max().orElse(3); + + sb.append(" +--").append("-".repeat(keyWidth + 2)).append("+--").append("-".repeat(maxCountWidth + 2)).append("+--").append("-".repeat(Math.min(maxBarWidth, 30) + 2)).append("+\n"); + sb.append(" | ").append(String.format("%-" + keyWidth + "s", "指标")).append(" | ").append(String.format("%" + maxCountWidth + "s", "数量")).append(" | 分布图").append(" |\n"); + sb.append(" +--").append("-".repeat(keyWidth + 2)).append("+--").append("-".repeat(maxCountWidth + 2)).append("+--").append("-".repeat(Math.min(maxBarWidth, 30) + 2)).append("+\n"); + + for (Map.Entry entry : sorted) { + int barLength = (int) ((double) entry.getValue() / maxValue * Math.min(maxBarWidth, 30)); + String bar = "#".repeat(Math.max(1, barLength)); + sb.append(" | ").append(String.format("%-" + keyWidth + "s", truncate(entry.getKey(), keyWidth))) + .append(" | ").append(String.format("%" + maxCountWidth + "d", entry.getValue())) + .append(" | ").append(bar).append(" |\n"); + } + + sb.append(" +--").append("-".repeat(keyWidth + 2)).append("+--").append("-".repeat(maxCountWidth + 2)).append("+--").append("-".repeat(Math.min(maxBarWidth, 30) + 2)).append("+\n"); + + return sb.toString(); + } + + /** + * 生成文本饼图 + */ + public static String generateTextPieChart(Map data) { + if (data == null || data.isEmpty()) { + return " [无数据]"; + } + + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + + int total = data.values().stream().mapToInt(Integer::intValue).sum(); + + if (total == 0) { + return " [无数据]"; + } + + List> sorted = data.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(8) + .toList(); + + int maxKeyLen = sorted.stream().mapToInt(e -> e.getKey().length()).max().orElse(10); + int keyWidth = Math.min(Math.max(maxKeyLen, 8), 16); + + sb.append(" +--").append("-".repeat(keyWidth + 2)).append("+--").append("-".repeat(8)).append("+--").append("-".repeat(35)).append("+\n"); + sb.append(" | ").append(String.format("%-" + keyWidth + "s", "类别")).append(" | 占比 | 分布图").append(" |\n"); + sb.append(" +--").append("-".repeat(keyWidth + 2)).append("+--").append("-".repeat(8)).append("+--").append("-".repeat(35)).append("+\n"); + + for (Map.Entry entry : sorted) { + double percentage = (double) entry.getValue() / total * 100; + int sliceLength = (int) (percentage / 100 * 30); + String slice = "#".repeat(Math.max(1, sliceLength)); + sb.append(" | ").append(String.format("%-" + keyWidth + "s", truncate(entry.getKey(), keyWidth))) + .append(" | ").append(String.format("%5.1f%%", percentage)) + .append(" | ").append(slice).append(" |\n"); + } + + sb.append(" +--").append("-".repeat(keyWidth + 2)).append("+--").append("-".repeat(8)).append("+--").append("-".repeat(35)).append("+\n"); + sb.append(" 总数: ").append(total).append("\n"); + + return sb.toString(); + } + + /** + * 生成文本表格 + */ + public static String generateTextTable(String[] headers, List rows) { + StringBuilder sb = new StringBuilder(); + + // 计算每列最大宽度 + int[] colWidths = new int[headers.length]; + for (int i = 0; i < headers.length; i++) { + colWidths[i] = headers[i].length(); + } + + for (String[] row : rows) { + for (int i = 0; i < Math.min(row.length, headers.length); i++) { + if (row[i] != null && row[i].length() > colWidths[i]) { + colWidths[i] = row[i].length(); + } + } + } + + // 生成分隔线 + StringBuilder separator = new StringBuilder("+"); + for (int width : colWidths) { + separator.append("-".repeat(width + 2)).append("+"); + } + + // 输出表头 + sb.append(separator).append("\n"); + sb.append("|"); + for (int i = 0; i < headers.length; i++) { + sb.append(String.format(" %-" + colWidths[i] + "s |", headers[i])); + } + sb.append("\n"); + sb.append(separator).append("\n"); + + // 输出数据行 + for (String[] row : rows) { + sb.append("|"); + for (int i = 0; i < headers.length; i++) { + String value = (i < row.length && row[i] != null) ? row[i] : ""; + sb.append(String.format(" %-" + colWidths[i] + "s |", truncate(value, colWidths[i]))); + } + sb.append("\n"); + } + sb.append(separator).append("\n"); + + return sb.toString(); + } + + /** + * 生成HTML报告(包含ECharts图表) + */ + public static void generateHtmlReport(String title, String statsHtml, String chartsHtml, String chartScripts, String outputPath) throws IOException { + String html = String.format(HTML_TEMPLATE, title, statsHtml, chartsHtml, chartScripts); + + File outputFile = new File(outputPath); + outputFile.getParentFile().mkdirs(); + + try (FileWriter writer = new FileWriter(outputFile)) { + writer.write(html); + } + + System.out.println("HTML报告已生成: " + outputFile.getAbsolutePath()); + } + + /** + * 生成柱状图HTML代码 + */ + public static String generateBarChartHtml(String chartId, String title) { + return String.format(""" +
+

%s

+
+
+ """, title, chartId); + } + + /** + * 生成饼图HTML代码 + */ + public static String generatePieChartHtml(String chartId, String title) { + return String.format(""" +
+

%s

+
+
+ """, title, chartId); + } + + /** + * 生成柱状图JavaScript代码 + */ + public static String generateBarChartScript(String chartId, String title, String[] xAxis, int[] yAxis) { + StringBuilder xData = new StringBuilder("["); + for (int i = 0; i < xAxis.length; i++) { + xData.append("'").append(escapeJs(xAxis[i])).append("'"); + if (i < xAxis.length - 1) xData.append(","); + } + xData.append("]"); + + StringBuilder yData = new StringBuilder("["); + for (int i = 0; i < yAxis.length; i++) { + yData.append(yAxis[i]); + if (i < yAxis.length - 1) yData.append(","); + } + yData.append("]"); + + return String.format(""" + var chart%s = echarts.init(document.getElementById('%s')); + chart%s.setOption({ + title: { text: '%s' }, + tooltip: {}, + xAxis: { data: %s }, + yAxis: {}, + series: [{ type: 'bar', data: %s, itemStyle: { color: '#667eea' } }] + }); + """, chartId, chartId, chartId, escapeJs(title), xData, yData); + } + + /** + * 生成饼图JavaScript代码 + */ + public static String generatePieChartScript(String chartId, String title, String[] names, int[] values) { + StringBuilder data = new StringBuilder("["); + for (int i = 0; i < names.length; i++) { + data.append("{value:").append(values[i]).append(",name:'").append(escapeJs(names[i])).append("'}"); + if (i < names.length - 1) data.append(","); + } + data.append("]"); + + return String.format(""" + var chart%s = echarts.init(document.getElementById('%s')); + chart%s.setOption({ + title: { text: '%s' }, + tooltip: { trigger: 'item', formatter: '{b}: {c} ({d}%)' }, + legend: { orient: 'vertical', right: 10, top: 'center' }, + series: [{ type: 'pie', radius: ['40%%', '70%%'], data: %s }] + }); + """, chartId, chartId, chartId, escapeJs(title), data); + } + + /** + * 生成统计卡片HTML + */ + public static String generateStatCard(String label, String value) { + return String.format(""" +
+
%s
+
%s
+
+ """, value, label); + } + + /** + * 生成HTML表格 + */ + public static String generateHtmlTable(String[] headers, List rows) { + StringBuilder sb = new StringBuilder(); + sb.append("
"); + + // 表头 + sb.append(""); + for (String header : headers) { + sb.append(""); + } + sb.append(""); + + // 数据行 + for (String[] row : rows) { + sb.append(""); + for (String cell : row) { + sb.append(""); + } + sb.append(""); + } + + sb.append("
").append(escapeHtml(header)).append("
").append(escapeHtml(cell != null ? cell : "")).append("
"); + return sb.toString(); + } + + private static String truncate(String str, int maxLength) { + if (str == null) return ""; + if (str.length() <= maxLength) return str; + return str.substring(0, maxLength - 3) + "..."; + } + + private static String escapeJs(String str) { + if (str == null) return ""; + return str.replace("\\", "\\\\").replace("'", "\\'").replace("\"", "\\\""); + } + + private static String escapeHtml(String str) { + if (str == null) return ""; + return str.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace("\"", """); + } +} diff --git a/project/src/main/java/com/example/analysis/DataCleaner.java b/project/src/main/java/com/example/analysis/DataCleaner.java new file mode 100644 index 0000000..078b0e7 --- /dev/null +++ b/project/src/main/java/com/example/analysis/DataCleaner.java @@ -0,0 +1,187 @@ +package com.example.analysis; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * 数据清洗工具类 + * 提供去空格、HTML标签移除、日期格式化、缺失值处理等功能 + */ +public class DataCleaner { + + private static final Pattern HTML_PATTERN = Pattern.compile("<[^>]*>"); + private static final Pattern MULTI_SPACE_PATTERN = Pattern.compile("\\s+"); + private static final String[] DATE_FORMATS = { + "yyyy-MM-dd", + "yyyy/MM/dd", + "yyyy年MM月dd日", + "yyyy-MM-dd HH:mm:ss", + "yyyy/MM/dd HH:mm:ss", + "yyyy-MM", + "yyyy年MM月", + "yyyy" + }; + + /** + * 去除字符串中的所有空格 + */ + public static String removeSpaces(String input) { + if (input == null) return ""; + return input.replaceAll("\\s", ""); + } + + /** + * 去除首尾空格,合并中间多个空格 + */ + public static String trimAndNormalize(String input) { + if (input == null) return ""; + return MULTI_SPACE_PATTERN.matcher(input.trim()).replaceAll(" "); + } + + /** + * 移除HTML标签 + */ + public static String removeHtmlTags(String input) { + if (input == null) return ""; + String result = HTML_PATTERN.matcher(input).replaceAll(""); + return trimAndNormalize(result); + } + + /** + * 格式化日期 + * @param input 原始日期字符串 + * @param targetFormat 目标格式,如 "yyyy-MM-dd" + * @return 格式化后的日期字符串,解析失败返回空字符串 + */ + public static String formatDate(String input, String targetFormat) { + if (input == null || input.isEmpty()) return ""; + + String normalizedInput = trimAndNormalize(input); + + for (String format : DATE_FORMATS) { + try { + SimpleDateFormat sdf = new SimpleDateFormat(format); + Date date = sdf.parse(normalizedInput); + SimpleDateFormat targetSdf = new SimpleDateFormat(targetFormat); + return targetSdf.format(date); + } catch (ParseException e) { + // 继续尝试下一个格式 + } + } + + // 如果都解析失败,尝试提取年份 + String year = extractYear(input); + if (!year.isEmpty()) { + return year + "-01-01"; + } + + return ""; + } + + /** + * 提取年份 + */ + public static String extractYear(String input) { + if (input == null) return ""; + Pattern yearPattern = Pattern.compile("(\\d{4})"); + java.util.regex.Matcher matcher = yearPattern.matcher(input); + if (matcher.find()) { + return matcher.group(1); + } + return ""; + } + + /** + * 处理缺失值 + * @param value 原始值 + * @param defaultValue 默认值 + * @return 如果原始值为空或null,返回默认值 + */ + public static String handleMissingValue(String value, String defaultValue) { + if (value == null || value.isEmpty() || "null".equalsIgnoreCase(value) || "N/A".equalsIgnoreCase(value)) { + return defaultValue; + } + return value.trim(); + } + + /** + * 处理数值缺失值 + * @param value 原始值 + * @param defaultValue 默认值 + * @return 如果原始值无效,返回默认值 + */ + public static double handleMissingNumber(String value, double defaultValue) { + if (value == null || value.isEmpty()) { + return defaultValue; + } + try { + return Double.parseDouble(value.trim()); + } catch (NumberFormatException e) { + return defaultValue; + } + } + + /** + * 清理电影数据 + */ + public static Map cleanMovieData(Map rawData) { + Map cleaned = new HashMap<>(); + + cleaned.put("title", trimAndNormalize(rawData.get("title"))); + cleaned.put("rating", handleMissingValue(rawData.get("rating"), "0")); + cleaned.put("releaseDate", formatDate(rawData.get("releaseDate"), "yyyy-MM-dd")); + cleaned.put("genre", trimAndNormalize(rawData.get("genre"))); + cleaned.put("director", trimAndNormalize(rawData.get("director"))); + cleaned.put("id", handleMissingValue(rawData.get("id"), "")); + + return cleaned; + } + + /** + * 清理图书数据 + */ + public static Map cleanBookData(Map rawData) { + Map cleaned = new HashMap<>(); + + cleaned.put("title", trimAndNormalize(rawData.get("title"))); + cleaned.put("author", trimAndNormalize(rawData.get("author"))); + cleaned.put("publisher", trimAndNormalize(rawData.get("publisher"))); + cleaned.put("rating", handleMissingValue(rawData.get("rating"), "0")); + cleaned.put("price", handleMissingValue(rawData.get("price"), "0")); + + return cleaned; + } + + /** + * 清理新闻数据 + */ + public static Map cleanNewsData(Map rawData) { + Map cleaned = new HashMap<>(); + + cleaned.put("title", trimAndNormalize(rawData.get("title"))); + cleaned.put("summary", removeHtmlTags(rawData.get("summary"))); + cleaned.put("publishTime", formatDate(rawData.get("publishTime"), "yyyy-MM-dd HH:mm:ss")); + cleaned.put("url", handleMissingValue(rawData.get("url"), "")); + + return cleaned; + } + + /** + * 清理音乐数据 + */ + public static Map cleanMusicData(Map rawData) { + Map cleaned = new HashMap<>(); + + cleaned.put("name", trimAndNormalize(rawData.get("name"))); + cleaned.put("artists", trimAndNormalize(rawData.get("artists"))); + cleaned.put("album", trimAndNormalize(rawData.get("album"))); + cleaned.put("duration", handleMissingValue(rawData.get("duration"), "0:00")); + cleaned.put("songId", handleMissingValue(rawData.get("songId"), "")); + + return cleaned; + } +} diff --git a/project/src/main/java/com/example/analysis/MovieAnalyzer.java b/project/src/main/java/com/example/analysis/MovieAnalyzer.java new file mode 100644 index 0000000..e7d1f8c --- /dev/null +++ b/project/src/main/java/com/example/analysis/MovieAnalyzer.java @@ -0,0 +1,285 @@ +package com.example.analysis; + +import com.example.model.MovieItem; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 电影数据分析器 + * 提供评分分布、年份相关性、导演排行等分析功能 + */ +public class MovieAnalyzer { + + public static AnalysisResult analyzeMovies(List movies) { + AnalysisResult result = new AnalysisResult(); + + if (movies == null || movies.isEmpty()) { + return result; + } + + result.totalCount = movies.size(); + + // 数据清洗 + List cleanedMovies = movies.stream() + .map(MovieAnalyzer::cleanMovieItem) + .filter(m -> !m.getTitle().isEmpty()) + .collect(Collectors.toList()); + + result.cleanedCount = cleanedMovies.size(); + + // 统计导演出现次数 + Map directorCount = cleanedMovies.stream() + .filter(m -> m.getDirector() != null && !m.getDirector().isEmpty()) + .collect(Collectors.groupingBy( + m -> m.getDirector(), + Collectors.summingInt(m -> 1) + )); + result.topDirectors = directorCount.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(5) + .collect(Collectors.toList()); + + // 统计类型分布 + Map genreCount = new HashMap<>(); + for (MovieItem movie : cleanedMovies) { + if (movie.getGenre() != null && !movie.getGenre().isEmpty()) { + String[] genres = movie.getGenre().split("[,,]"); + for (String genre : genres) { + genre = genre.trim(); + if (!genre.isEmpty()) { + genreCount.merge(genre, 1, Integer::sum); + } + } + } + } + result.genreDistribution = genreCount; + + // 计算评分统计 + List validRatings = cleanedMovies.stream() + .map(m -> { + try { + return Double.parseDouble(m.getRating()); + } catch (Exception e) { + return null; + } + }) + .filter(Objects::nonNull) + .sorted() + .collect(Collectors.toList()); + + result.ratingCount = validRatings.size(); + if (!validRatings.isEmpty()) { + result.averageRating = String.format("%.2f", validRatings.stream().mapToDouble(Double::doubleValue).average().orElse(0)); + result.minRating = String.format("%.1f", validRatings.get(0)); + result.maxRating = String.format("%.1f", validRatings.get(validRatings.size() - 1)); + result.medianRating = String.format("%.2f", calculateMedian(validRatings)); + result.ratingStdDev = String.format("%.2f", calculateStdDev(validRatings)); + } else { + result.averageRating = "N/A"; + result.minRating = "N/A"; + result.maxRating = "N/A"; + result.medianRating = "N/A"; + result.ratingStdDev = "N/A"; + } + + // 评分分布统计 + Map ratingDistribution = new LinkedHashMap<>(); + ratingDistribution.put("0-2分", 0); + ratingDistribution.put("2-4分", 0); + ratingDistribution.put("4-6分", 0); + ratingDistribution.put("6-8分", 0); + ratingDistribution.put("8-10分", 0); + + for (Double rating : validRatings) { + if (rating >= 0 && rating < 2) { + ratingDistribution.merge("0-2分", 1, Integer::sum); + } else if (rating >= 2 && rating < 4) { + ratingDistribution.merge("2-4分", 1, Integer::sum); + } else if (rating >= 4 && rating < 6) { + ratingDistribution.merge("4-6分", 1, Integer::sum); + } else if (rating >= 6 && rating < 8) { + ratingDistribution.merge("6-8分", 1, Integer::sum); + } else if (rating >= 8 && rating <= 10) { + ratingDistribution.merge("8-10分", 1, Integer::sum); + } + } + result.ratingDistribution = ratingDistribution; + + // 统计年份分布 + Map yearCount = cleanedMovies.stream() + .filter(m -> m.getReleaseDate() != null && !m.getReleaseDate().isEmpty()) + .map(m -> { + String date = m.getReleaseDate(); + return date.substring(0, Math.min(4, date.length())); + }) + .collect(Collectors.groupingBy( + year -> year, + Collectors.summingInt(year -> 1) + )); + result.yearDistribution = yearCount.entrySet().stream() + .sorted(Map.Entry.comparingByKey().reversed()) + .collect(Collectors.toList()); + + // 年份与评分相关性分析 + Map yearAvgRating = new HashMap<>(); + Map yearRatingCount = new HashMap<>(); + for (MovieItem movie : cleanedMovies) { + if (movie.getReleaseDate() != null && !movie.getReleaseDate().isEmpty()) { + String year = movie.getReleaseDate().substring(0, Math.min(4, movie.getReleaseDate().length())); + try { + double rating = Double.parseDouble(movie.getRating()); + yearAvgRating.merge(year, rating, Double::sum); + yearRatingCount.merge(year, 1, Integer::sum); + } catch (Exception e) { + // ignore + } + } + } + Map yearRatingAvg = new HashMap<>(); + for (Map.Entry entry : yearAvgRating.entrySet()) { + int count = yearRatingCount.getOrDefault(entry.getKey(), 1); + yearRatingAvg.put(entry.getKey(), String.format("%.2f", entry.getValue() / count)); + } + result.yearAverageRating = yearRatingAvg; + + // 找出评分最高的电影 + result.topRatedMovies = cleanedMovies.stream() + .filter(m -> { + try { + Double.parseDouble(m.getRating()); + return true; + } catch (Exception e) { + return false; + } + }) + .sorted((a, b) -> { + try { + double r1 = Double.parseDouble(a.getRating()); + double r2 = Double.parseDouble(b.getRating()); + return Double.compare(r2, r1); + } catch (Exception e) { + return 0; + } + }) + .limit(5) + .collect(Collectors.toList()); + + return result; + } + + private static MovieItem cleanMovieItem(MovieItem item) { + String title = DataCleaner.trimAndNormalize(item.getTitle()); + String rating = DataCleaner.handleMissingValue(item.getRating(), "0"); + String releaseDate = DataCleaner.formatDate(item.getReleaseDate(), "yyyy-MM-dd"); + String genre = DataCleaner.trimAndNormalize(item.getGenre()); + String director = DataCleaner.trimAndNormalize(item.getDirector()); + + return new MovieItem(item.getId(), title, rating, releaseDate, genre, director); + } + + private static double calculateMedian(List values) { + int size = values.size(); + if (size % 2 == 0) { + return (values.get(size / 2 - 1) + values.get(size / 2)) / 2.0; + } else { + return values.get(size / 2); + } + } + + private static double calculateStdDev(List values) { + double mean = values.stream().mapToDouble(Double::doubleValue).average().orElse(0); + double variance = values.stream() + .mapToDouble(v -> Math.pow(v - mean, 2)) + .average() + .orElse(0); + return Math.sqrt(variance); + } + + public static class AnalysisResult { + public int totalCount; + public int cleanedCount; + public List> topDirectors; + public Map genreDistribution; + public String averageRating; + public String minRating; + public String maxRating; + public String medianRating; + public String ratingStdDev; + public int ratingCount; + public Map ratingDistribution; + public List> yearDistribution; + public Map yearAverageRating; + public List topRatedMovies; + + public void print() { + System.out.println("\n============================================================"); + System.out.println(" [ 电影数据分析报告 ]"); + System.out.println("============================================================"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 基本统计 ]"); + System.out.println("------------------------------------------------------------"); + System.out.printf(" %-22s | %12s%n", "项目", "数值"); + System.out.printf(" %-22s | %12d%n", "原始数据量", totalCount); + System.out.printf(" %-22s | %12d%n", "清洗后数据量", cleanedCount); + System.out.printf(" %-22s | %12s%n", "平均评分", averageRating); + System.out.printf(" %-22s | %12s%n", "最低评分", minRating); + System.out.printf(" %-22s | %12s%n", "最高评分", maxRating); + System.out.printf(" %-22s | %12s%n", "中位数评分", medianRating); + System.out.printf(" %-22s | %12s%n", "评分标准差", ratingStdDev); + System.out.println("------------------------------------------------------------"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 评分最高的5部电影 ]"); + System.out.println("------------------------------------------------------------"); + System.out.printf(" %-4s | %-30s | %-8s | %-10s%n", "排名", "片名", "评分", "年份"); + System.out.println(" ---- | ------------------------------ | -------- | ----------"); + if (topRatedMovies != null) { + for (int i = 0; i < topRatedMovies.size(); i++) { + MovieItem m = topRatedMovies.get(i); + System.out.printf(" %-4d | %-30s | %-8s | %-10s%n", + i + 1, + truncate(m.getTitle(), 30), + m.getRating(), + m.getReleaseDate() != null ? m.getReleaseDate().substring(0, Math.min(4, m.getReleaseDate().length())) : ""); + } + } + System.out.println("------------------------------------------------------------"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 热门导演 TOP5 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextBarChart( + topDirectors != null ? topDirectors.stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) : new HashMap<>(), 30)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 类型分布 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextPieChart(genreDistribution != null ? genreDistribution : new HashMap<>())); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 评分分布 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextBarChart(ratingDistribution != null ? ratingDistribution : new HashMap<>(), 30)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 年份分布(最近10年) ]"); + System.out.println("------------------------------------------------------------"); + Map recentYears = new HashMap<>(); + if (yearDistribution != null) { + yearDistribution.stream().limit(10).forEach(e -> recentYears.put(e.getKey(), e.getValue())); + } + System.out.println(ChartGenerator.generateTextBarChart(recentYears, 30)); + + System.out.println("\n============================================================"); + } + + private String truncate(String str, int maxLength) { + if (str == null) return ""; + if (str.length() <= maxLength) return str; + return str.substring(0, maxLength - 3) + "..."; + } + } +} diff --git a/project/src/main/java/com/example/analysis/MusicAnalyzer.java b/project/src/main/java/com/example/analysis/MusicAnalyzer.java new file mode 100644 index 0000000..fce1caf --- /dev/null +++ b/project/src/main/java/com/example/analysis/MusicAnalyzer.java @@ -0,0 +1,189 @@ +package com.example.analysis; + +import com.example.model.Song; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 音乐数据分析器 + */ +public class MusicAnalyzer { + + public static AnalysisResult analyzeSongs(List songs) { + AnalysisResult result = new AnalysisResult(); + + if (songs == null || songs.isEmpty()) { + return result; + } + + result.totalCount = songs.size(); + + // 数据清洗 + List cleanedSongs = songs.stream() + .map(MusicAnalyzer::cleanSongItem) + .filter(s -> !s.getName().isEmpty()) + .collect(Collectors.toList()); + + result.cleanedCount = cleanedSongs.size(); + + // 统计歌手出现次数 + Map artistCount = new HashMap<>(); + for (Song song : cleanedSongs) { + for (String artist : song.getArtists()) { + if (artist != null && !artist.isEmpty()) { + artistCount.merge(artist, 1, Integer::sum); + } + } + } + result.topArtists = artistCount.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(5) + .collect(Collectors.toList()); + + // 统计专辑数量 + Set albums = cleanedSongs.stream() + .filter(s -> s.getAlbum() != null && !s.getAlbum().isEmpty()) + .map(Song::getAlbum) + .collect(Collectors.toSet()); + result.albumCount = albums.size(); + + // 计算时长统计 + List durations = cleanedSongs.stream() + .map(s -> parseDuration(s.getDuration())) + .filter(d -> d > 0) + .sorted() + .collect(Collectors.toList()); + + if (!durations.isEmpty()) { + int totalDuration = durations.stream().mapToInt(Integer::intValue).sum(); + result.averageDuration = formatDuration(totalDuration / durations.size()); + result.minDuration = formatDuration(durations.get(0)); + result.maxDuration = formatDuration(durations.get(durations.size() - 1)); + } else { + result.averageDuration = "N/A"; + result.minDuration = "N/A"; + result.maxDuration = "N/A"; + } + + // 时长分布 + Map durationDistribution = new LinkedHashMap<>(); + durationDistribution.put("2分钟以下", 0); + durationDistribution.put("2-3分钟", 0); + durationDistribution.put("3-4分钟", 0); + durationDistribution.put("4-5分钟", 0); + durationDistribution.put("5分钟以上", 0); + + for (int duration : durations) { + if (duration < 120) { + durationDistribution.merge("2分钟以下", 1, Integer::sum); + } else if (duration < 180) { + durationDistribution.merge("2-3分钟", 1, Integer::sum); + } else if (duration < 240) { + durationDistribution.merge("3-4分钟", 1, Integer::sum); + } else if (duration < 300) { + durationDistribution.merge("4-5分钟", 1, Integer::sum); + } else { + durationDistribution.merge("5分钟以上", 1, Integer::sum); + } + } + result.durationDistribution = durationDistribution; + + // 按平台统计 + Map platformCount = cleanedSongs.stream() + .collect(Collectors.groupingBy( + Song::getPlatform, + Collectors.summingInt(s -> 1) + )); + result.platformDistribution = platformCount; + + return result; + } + + private static Song cleanSongItem(Song item) { + String name = DataCleaner.trimAndNormalize(item.getName()); + List artists = item.getArtists().stream() + .map(DataCleaner::trimAndNormalize) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toList()); + String album = DataCleaner.trimAndNormalize(item.getAlbum()); + String duration = DataCleaner.handleMissingValue(item.getDuration(), "0:00"); + + return new Song(item.getSongId(), name, artists, album, duration, item.getPlatform()); + } + + private static int parseDuration(String durationStr) { + if (durationStr == null || durationStr.isEmpty()) { + return 0; + } + try { + String[] parts = durationStr.split(":"); + if (parts.length == 2) { + return Integer.parseInt(parts[0]) * 60 + Integer.parseInt(parts[1]); + } else if (parts.length == 3) { + return Integer.parseInt(parts[0]) * 3600 + Integer.parseInt(parts[1]) * 60 + Integer.parseInt(parts[2]); + } + } catch (Exception e) { + // ignore + } + return 0; + } + + private static String formatDuration(int seconds) { + int hours = seconds / 3600; + int minutes = (seconds % 3600) / 60; + int secs = seconds % 60; + if (hours > 0) { + return String.format("%d:%02d:%02d", hours, minutes, secs); + } + return String.format("%d:%02d", minutes, secs); + } + + public static class AnalysisResult { + public int totalCount; + public int cleanedCount; + public List> topArtists; + public int albumCount; + public String averageDuration; + public String minDuration; + public String maxDuration; + public Map durationDistribution; + public Map platformDistribution; + + public void print() { + System.out.println("\n============================================================"); + System.out.println(" [ 音乐数据分析报告 ]"); + System.out.println("============================================================"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 基本统计 ]"); + System.out.println("------------------------------------------------------------"); + System.out.printf(" %-22s | %12d%n", "原始数据量", totalCount); + System.out.printf(" %-22s | %12d%n", "清洗后数据量", cleanedCount); + System.out.printf(" %-22s | %12d%n", "专辑数量", albumCount); + System.out.printf(" %-22s | %12s%n", "平均时长", averageDuration); + System.out.printf(" %-22s | %12s%n", "最短时长", minDuration); + System.out.printf(" %-22s | %12s%n", "最长时长", maxDuration); + System.out.println("------------------------------------------------------------"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 热门歌手 TOP5 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextBarChart( + topArtists != null ? topArtists.stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) : new HashMap<>(), 30)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 时长分布 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextPieChart(durationDistribution != null ? durationDistribution : new HashMap<>())); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 平台分布 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextPieChart(platformDistribution != null ? platformDistribution : new HashMap<>())); + + System.out.println("\n============================================================"); + } + } +} diff --git a/project/src/main/java/com/example/analysis/NewsAnalyzer.java b/project/src/main/java/com/example/analysis/NewsAnalyzer.java new file mode 100644 index 0000000..26479a7 --- /dev/null +++ b/project/src/main/java/com/example/analysis/NewsAnalyzer.java @@ -0,0 +1,298 @@ +package com.example.analysis; + +import com.example.model.NewsItem; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 新闻数据分析器 + * 提供关键词提取、热点趋势、情感分析等功能 + */ +public class NewsAnalyzer { + + private static final Set POSITIVE_WORDS = new HashSet<>(Arrays.asList( + "成功", "胜利", "优秀", "卓越", "创新", "突破", "进展", "增长", "上升", "上涨", + "利好", "稳定", "稳健", "繁荣", "进步", "提升", "增强", "扩大", "开放", "合作", + "强劲", "积极", "乐观", "改善", "显著", "明显", "快速", "持续", "健康", "和谐", + "领先", "开创", "引领", "辉煌", "成就", "杰出", "重要", "重大", "关键", "核心", + "满意", "好评", "推荐", "点赞", "支持", "肯定", "赞扬", "表扬", "祝贺", "庆祝", + "首次", "第一", "最好", "最高", "最大", "最强", "最优", "最美", "最新", "最优", + "安全", "顺利", "圆满", "完美", "精彩", "成功", "实现", "完成", "达到", "获得", + "提升", "提高", "加快", "加速", "增长", "增产", "增收", "增效", "节能", "环保" + )); + + private static final Set NEGATIVE_WORDS = new HashSet<>(Arrays.asList( + "失败", "失败", "下降", "下跌", "下滑", "亏损", "危机", "风险", "问题", "隐患", + "负面", "挑战", "困难", "压力", "担忧", "紧张", "低迷", "疲软", "萎缩", "衰退", + "警告", "质疑", "争议", "丑闻", "事故", "损失", "损失", "影响", "恶化", "放缓", + "暴跌", "倒闭", "裁员", "紧缩", "减少", "下降", "下滑", "回落", "跳水", "崩盘", + "违约", "诈骗", "违法", "犯罪", "腐败", "贪污", "贿赂", "贿赂", "黑幕", "内幕", + "批评", "指责", "谴责", "反对", "抗议", "示威", "冲突", "暴力", "伤亡", "死亡", + "灾害", "灾难", "灾难", "灾情", "疫情", "病情", "病情", "危害", "威胁", "破坏", + "浪费", "污染", "超标", "违规", "违法", "违章", "违纪", "腐败", "堕落", "丑闻" + )); + + private static final Set STOP_WORDS = new HashSet<>(Arrays.asList( + "的", "是", "在", "和", "有", "我", "他", "她", "它", "这", "那", "了", "着", "过", + "也", "都", "就", "而", "及", "与", "等", "对", "对于", "关于", "由于", "因此", + "但是", "然而", "可以", "可能", "应该", "必须", "不", "没", "没有", "不是", "不会", + "能", "会", "该", "要", "会", "可", "能", "得", "很", "都", "把", "被", "让", "给", + "向", "从", "到", "为", "以", "及", "或", "且", "又", "却", "只", "还", "已", "已经", + "正在", "将", "将要", "曾", "曾经", "刚", "刚刚", "才", "刚才", "再", "又一次", + "一", "一些", "一点", "一定", "一样", "一边", "一起", "一下", "一旦", "一同", + "自己", "别人", "大家", "我们", "你们", "他们", "她们", "它们", "这个", "那个", + "什么", "怎么", "怎样", "如何", "为何", "为什么", "多少", "几个", "谁", "哪里", + "这里", "那里", "这时候", "那时候", "现在", "目前", "今天", "昨天", "明天", + "说", "表示", "指出", "认为", "觉得", "知道", "看到", "发现", "提出", "介绍", + "开始", "进行", "结束", "完成", "继续", "停止", "禁止", "要求", "希望", "需要", + "使用", "通过", "根据", "按照", "为了", "以便", "自从", "除非", "即使", "虽然", + "尽管", "无论", "不管", "只要", "只有", "而且", "并且", "或者", "还是", "不是", + "那么", "这么", "这样", "那样", "如此", "之", "其", "本", "此", "该", "某", "各", + "每", "后", "前", "中", "间", "内", "外", "上", "下", "左", "右", "旁", "侧" + )); + + public static AnalysisResult analyzeNews(List newsList) { + AnalysisResult result = new AnalysisResult(); + + if (newsList == null || newsList.isEmpty()) { + return result; + } + + result.totalCount = newsList.size(); + + // 数据清洗 + List cleanedNews = newsList.stream() + .map(NewsAnalyzer::cleanNewsItem) + .filter(n -> !n.getTitle().isEmpty()) + .collect(Collectors.toList()); + + result.cleanedCount = cleanedNews.size(); + + // 计算平均标题长度 + int totalTitleLength = cleanedNews.stream() + .mapToInt(n -> n.getTitle() != null ? n.getTitle().length() : 0) + .sum(); + result.averageTitleLength = cleanedNews.size() > 0 ? totalTitleLength / cleanedNews.size() : 0; + + // 计算平均摘要长度 + int totalSummaryLength = cleanedNews.stream() + .mapToInt(n -> n.getSummary() != null ? n.getSummary().length() : 0) + .sum(); + result.averageSummaryLength = cleanedNews.size() > 0 ? totalSummaryLength / cleanedNews.size() : 0; + + // 词频分析(标题) + Map titleWordCount = new HashMap<>(); + Set stopWords = getStopWords(); + for (NewsItem news : cleanedNews) { + if (news.getTitle() != null) { + String[] words = news.getTitle().split("[\\s\\p{Punct}]+"); + for (String word : words) { + word = word.trim().toLowerCase(); + if (word.length() >= 2 && !stopWords.contains(word)) { + titleWordCount.merge(word, 1, Integer::sum); + } + } + } + } + result.topTitleWords = titleWordCount.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(10) + .collect(Collectors.toList()); + + // 词频分析(摘要) + Map summaryWordCount = new HashMap<>(); + for (NewsItem news : cleanedNews) { + if (news.getSummary() != null) { + String[] words = news.getSummary().split("[\\s\\p{Punct}]+"); + for (String word : words) { + word = word.trim().toLowerCase(); + if (word.length() >= 2 && !stopWords.contains(word)) { + summaryWordCount.merge(word, 1, Integer::sum); + } + } + } + } + result.topSummaryWords = summaryWordCount.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(10) + .collect(Collectors.toList()); + + // 统计来源域名 + Map sourceCount = cleanedNews.stream() + .filter(n -> n.getUrl() != null) + .collect(Collectors.groupingBy( + n -> extractDomain(n.getUrl()), + Collectors.summingInt(n -> 1) + )); + result.sourceDistribution = sourceCount; + + // 按时间统计 + Map dateCount = cleanedNews.stream() + .filter(n -> n.getPublishTime() != null && !n.getPublishTime().isEmpty()) + .collect(Collectors.groupingBy( + n -> n.getPublishTime().substring(0, Math.min(10, n.getPublishTime().length())), + Collectors.summingInt(n -> 1) + )); + result.dateDistribution = dateCount.entrySet().stream() + .sorted(Map.Entry.comparingByKey().reversed()) + .limit(7) + .collect(Collectors.toList()); + + // 情感分析 + int positiveCount = 0; + int negativeCount = 0; + int neutralCount = 0; + + for (NewsItem news : cleanedNews) { + String text = (news.getTitle() != null ? news.getTitle() : "") + + " " + (news.getSummary() != null ? news.getSummary() : ""); + int sentiment = analyzeSentiment(text); + if (sentiment > 0) { + positiveCount++; + } else if (sentiment < 0) { + negativeCount++; + } else { + neutralCount++; + } + } + + result.positiveCount = positiveCount; + result.negativeCount = negativeCount; + result.neutralCount = neutralCount; + + return result; + } + + private static NewsItem cleanNewsItem(NewsItem item) { + String title = DataCleaner.trimAndNormalize(item.getTitle()); + String summary = DataCleaner.removeHtmlTags(item.getSummary()); + String publishTime = DataCleaner.formatDate(item.getPublishTime(), "yyyy-MM-dd HH:mm:ss"); + String url = DataCleaner.handleMissingValue(item.getUrl(), ""); + + return new NewsItem(title, summary, url, publishTime); + } + + /** + * 简单词典法情感分析 + * @return 正数表示正面,负数表示负面,0表示中性 + */ + private static int analyzeSentiment(String text) { + if (text == null || text.isEmpty()) { + return 0; + } + + int score = 0; + String lowerText = text.toLowerCase(); + + for (String word : POSITIVE_WORDS) { + if (lowerText.contains(word.toLowerCase())) { + score++; + } + } + + for (String word : NEGATIVE_WORDS) { + if (lowerText.contains(word.toLowerCase())) { + score--; + } + } + + return score; + } + + private static Set getStopWords() { + return STOP_WORDS; + } + + private static String extractDomain(String url) { + try { + if (url.startsWith("http://")) { + url = url.substring(7); + } else if (url.startsWith("https://")) { + url = url.substring(8); + } + int endIndex = url.indexOf('/'); + if (endIndex > 0) { + url = url.substring(0, endIndex); + } + return url; + } catch (Exception e) { + return "unknown"; + } + } + + public static class AnalysisResult { + public int totalCount; + public int cleanedCount; + public int averageTitleLength; + public int averageSummaryLength; + public List> topTitleWords; + public List> topSummaryWords; + public Map sourceDistribution; + public List> dateDistribution; + public int positiveCount; + public int negativeCount; + public int neutralCount; + + public void print() { + System.out.println("\n============================================================"); + System.out.println(" [ 新闻数据分析报告 ]"); + System.out.println("============================================================"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 基本统计 ]"); + System.out.println("------------------------------------------------------------"); + System.out.printf(" %-22s | %12d%n", "原始数据量", totalCount); + System.out.printf(" %-22s | %12d%n", "清洗后数据量", cleanedCount); + System.out.printf(" %-22s | %10d 字%n", "平均标题长度", averageTitleLength); + System.out.printf(" %-22s | %10d 字%n", "平均摘要长度", averageSummaryLength); + System.out.println("------------------------------------------------------------"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 情感分析 ]"); + System.out.println("------------------------------------------------------------"); + int totalSentiment = positiveCount + negativeCount + neutralCount; + double positiveRatio = totalSentiment > 0 ? (double) positiveCount / totalSentiment * 100 : 0; + double negativeRatio = totalSentiment > 0 ? (double) negativeCount / totalSentiment * 100 : 0; + double neutralRatio = totalSentiment > 0 ? (double) neutralCount / totalSentiment * 100 : 0; + System.out.printf(" %-15s | %12d | %6.1f%%%n", "正面", positiveCount, positiveRatio); + System.out.printf(" %-15s | %12d | %6.1f%%%n", "负面", negativeCount, negativeRatio); + System.out.printf(" %-15s | %12d | %6.1f%%%n", "中性", neutralCount, neutralRatio); + System.out.println("------------------------------------------------------------"); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 标题热词 TOP10 ]"); + System.out.println("------------------------------------------------------------"); + Map titleWordMap = new LinkedHashMap<>(); + if (topTitleWords != null) { + topTitleWords.forEach(e -> titleWordMap.put(e.getKey(), e.getValue())); + } + System.out.println(ChartGenerator.generateTextBarChart(titleWordMap, 25)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 摘要热词 TOP10 ]"); + System.out.println("------------------------------------------------------------"); + Map summaryWordMap = new LinkedHashMap<>(); + if (topSummaryWords != null) { + topSummaryWords.forEach(e -> summaryWordMap.put(e.getKey(), e.getValue())); + } + System.out.println(ChartGenerator.generateTextBarChart(summaryWordMap, 25)); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 来源分布 ]"); + System.out.println("------------------------------------------------------------"); + System.out.println(ChartGenerator.generateTextPieChart(sourceDistribution != null ? sourceDistribution : new HashMap<>())); + + System.out.println("\n------------------------------------------------------------"); + System.out.println(" [ 日期分布(最近) ]"); + System.out.println("------------------------------------------------------------"); + Map recentDates = new LinkedHashMap<>(); + if (dateDistribution != null) { + dateDistribution.forEach(e -> recentDates.put(e.getKey(), e.getValue())); + } + System.out.println(ChartGenerator.generateTextBarChart(recentDates, 25)); + + System.out.println("\n============================================================"); + } + } +} diff --git a/project/src/main/java/com/example/chart/JFreeChartGenerator.java b/project/src/main/java/com/example/chart/JFreeChartGenerator.java new file mode 100644 index 0000000..7bce56b --- /dev/null +++ b/project/src/main/java/com/example/chart/JFreeChartGenerator.java @@ -0,0 +1,399 @@ +package com.example.chart; + +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartUtils; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.CategoryLabelPositions; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.PiePlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.category.BarRenderer; +import org.jfree.chart.renderer.xy.XYItemRenderer; +import org.jfree.chart.title.TextTitle; +import org.jfree.data.category.DefaultCategoryDataset; +import org.jfree.data.general.DefaultPieDataset; +import org.jfree.data.xy.XYSeries; +import org.jfree.data.xy.XYSeriesCollection; + +import java.awt.*; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * JFreeChart图表生成器 + * 支持柱状图、饼图、折线图的生成和保存 + */ +public class JFreeChartGenerator { + + private static final Font TITLE_FONT = new Font("微软雅黑", Font.BOLD, 18); + private static final Font LABEL_FONT = new Font("微软雅黑", Font.PLAIN, 12); + private static final Font TICK_FONT = new Font("微软雅黑", Font.PLAIN, 10); + + /** + * 生成柱状图 + * + * @param title 图表标题 + * @param xAxisLabel X轴标签 + * @param yAxisLabel Y轴标签 + * @param data 数据 (类别 -> 值) + * @param outputPath 输出路径 + * @throws IOException IO异常 + */ + public static void generateBarChart(String title, String xAxisLabel, String yAxisLabel, + Map data, String outputPath) throws IOException { + DefaultCategoryDataset dataset = new DefaultCategoryDataset(); + + for (Map.Entry entry : data.entrySet()) { + dataset.addValue(entry.getValue(), "数量", entry.getKey()); + } + + JFreeChart chart = ChartFactory.createBarChart( + title, + xAxisLabel, + yAxisLabel, + dataset, + PlotOrientation.VERTICAL, + false, + true, + false + ); + + customizeChart(chart); + + // 设置柱状图颜色 + CategoryPlot plot = chart.getCategoryPlot(); + BarRenderer renderer = (BarRenderer) plot.getRenderer(); + renderer.setSeriesPaint(0, new Color(102, 126, 234)); + renderer.setShadowVisible(false); + + // 设置X轴标签倾斜 + CategoryAxis domainAxis = plot.getDomainAxis(); + domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); + + saveChart(chart, outputPath, 800, 400); + } + + /** + * 生成饼图 + * + * @param title 图表标题 + * @param data 数据 (类别 -> 值) + * @param outputPath 输出路径 + * @throws IOException IO异常 + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + public static void generatePieChart(String title, Map data, String outputPath) throws IOException { + DefaultPieDataset dataset = new DefaultPieDataset(); + + for (Map.Entry entry : data.entrySet()) { + dataset.setValue(entry.getKey(), entry.getValue()); + } + + JFreeChart chart = ChartFactory.createPieChart( + title, + dataset, + true, + true, + false + ); + + customizeChart(chart); + + // 设置饼图样式 + PiePlot plot = (PiePlot) chart.getPlot(); + plot.setLabelFont(TICK_FONT); + plot.setLabelGap(0.02); + plot.setCircular(true); + + // 设置颜色 + Color[] colors = { + new Color(102, 126, 234), + new Color(118, 75, 162), + new Color(121, 80, 120), + new Color(240, 147, 151), + new Color(241, 194, 50), + new Color(255, 182, 193), + new Color(144, 238, 144), + new Color(135, 206, 250) + }; + for (int i = 0; i < dataset.getItemCount(); i++) { + plot.setSectionPaint(i, colors[i % colors.length]); + } + + saveChart(chart, outputPath, 800, 400); + } + + /** + * 生成折线图 + * + * @param title 图表标题 + * @param xAxisLabel X轴标签 + * @param yAxisLabel Y轴标签 + * @param data 数据 (X值 -> Y值) + * @param outputPath 输出路径 + * @throws IOException IO异常 + */ + public static void generateLineChart(String title, String xAxisLabel, String yAxisLabel, + Map data, String outputPath) throws IOException { + XYSeries series = new XYSeries("数值"); + + int index = 0; + for (Map.Entry entry : data.entrySet()) { + series.add(index++, entry.getValue()); + } + + XYSeriesCollection dataset = new XYSeriesCollection(series); + + JFreeChart chart = ChartFactory.createXYLineChart( + title, + xAxisLabel, + yAxisLabel, + dataset, + PlotOrientation.VERTICAL, + false, + true, + false + ); + + customizeChart(chart); + + // 设置折线样式 + XYPlot plot = chart.getXYPlot(); + XYItemRenderer renderer = plot.getRenderer(); + renderer.setSeriesPaint(0, new Color(102, 126, 234)); + renderer.setSeriesStroke(0, new BasicStroke(2.0f)); + + saveChart(chart, outputPath, 800, 400); + } + + /** + * 生成堆叠柱状图 + * + * @param title 图表标题 + * @param xAxisLabel X轴标签 + * @param yAxisLabel Y轴标签 + * @param data 数据 (系列名称 -> (类别 -> 值)) + * @param outputPath 输出路径 + * @throws IOException IO异常 + */ + public static void generateStackedBarChart(String title, String xAxisLabel, String yAxisLabel, + Map> data, String outputPath) throws IOException { + DefaultCategoryDataset dataset = new DefaultCategoryDataset(); + + for (Map.Entry> seriesEntry : data.entrySet()) { + String seriesName = seriesEntry.getKey(); + for (Map.Entry entry : seriesEntry.getValue().entrySet()) { + dataset.addValue(entry.getValue(), seriesName, entry.getKey()); + } + } + + JFreeChart chart = ChartFactory.createStackedBarChart( + title, + xAxisLabel, + yAxisLabel, + dataset, + PlotOrientation.VERTICAL, + true, + true, + false + ); + + customizeChart(chart); + saveChart(chart, outputPath, 800, 400); + } + + /** + * 生成多条折线图 + * + * @param title 图表标题 + * @param xAxisLabel X轴标签 + * @param yAxisLabel Y轴标签 + * @param data 数据 (系列名称 -> (X值 -> Y值)) + * @param outputPath 输出路径 + * @throws IOException IO异常 + */ + public static void generateMultiLineChart(String title, String xAxisLabel, String yAxisLabel, + Map> data, String outputPath) throws IOException { + XYSeriesCollection dataset = new XYSeriesCollection(); + + Color[] colors = { + new Color(102, 126, 234), + new Color(240, 147, 151), + new Color(144, 238, 144), + new Color(255, 215, 0), + new Color(135, 206, 250) + }; + + for (Map.Entry> seriesEntry : data.entrySet()) { + XYSeries series = new XYSeries(seriesEntry.getKey()); + int index = 0; + for (Double value : seriesEntry.getValue().values()) { + series.add(index++, value); + } + dataset.addSeries(series); + } + + JFreeChart chart = ChartFactory.createXYLineChart( + title, + xAxisLabel, + yAxisLabel, + dataset, + PlotOrientation.VERTICAL, + true, + true, + false + ); + + customizeChart(chart); + + // 设置每条折线的颜色 + XYPlot plot = chart.getXYPlot(); + XYItemRenderer renderer = plot.getRenderer(); + for (int i = 0; i < dataset.getSeriesCount(); i++) { + renderer.setSeriesPaint(i, colors[i % colors.length]); + renderer.setSeriesStroke(i, new BasicStroke(2.0f)); + } + + saveChart(chart, outputPath, 800, 400); + } + + /** + * 自定义图表样式 + */ + @SuppressWarnings("rawtypes") + private static void customizeChart(JFreeChart chart) { + chart.setTitle(new TextTitle(chart.getTitle().getText(), TITLE_FONT)); + chart.setBackgroundPaint(Color.WHITE); + + org.jfree.chart.plot.Plot plot = chart.getPlot(); + if (plot instanceof CategoryPlot) { + CategoryPlot categoryPlot = (CategoryPlot) plot; + categoryPlot.setBackgroundPaint(Color.WHITE); + categoryPlot.setRangeGridlinePaint(Color.LIGHT_GRAY); + categoryPlot.setOutlinePaint(null); + CategoryAxis domainAxis = categoryPlot.getDomainAxis(); + domainAxis.setLabelFont(LABEL_FONT); + domainAxis.setTickLabelFont(TICK_FONT); + NumberAxis rangeAxis = (NumberAxis) categoryPlot.getRangeAxis(); + rangeAxis.setLabelFont(LABEL_FONT); + rangeAxis.setTickLabelFont(TICK_FONT); + } else if (plot instanceof PiePlot) { + PiePlot piePlot = (PiePlot) plot; + piePlot.setBackgroundPaint(Color.WHITE); + piePlot.setOutlinePaint(null); + } else if (plot instanceof XYPlot) { + XYPlot xyPlot = (XYPlot) plot; + xyPlot.setBackgroundPaint(Color.WHITE); + xyPlot.setDomainGridlinePaint(Color.LIGHT_GRAY); + xyPlot.setRangeGridlinePaint(Color.LIGHT_GRAY); + xyPlot.setOutlinePaint(null); + } + } + + /** + * 保存图表为图片 + */ + private static void saveChart(JFreeChart chart, String outputPath, int width, int height) throws IOException { + File outputFile = new File(outputPath); + outputFile.getParentFile().mkdirs(); + ChartUtils.saveChartAsPNG(outputFile, chart, width, height); + System.out.println("图表已保存: " + outputFile.getAbsolutePath()); + } + + /** + * 生成电影数据分析图表 + */ + public static void generateMovieCharts(Map genreDistribution, + Map ratingDistribution, + List> topDirectors) throws IOException { + // 类型分布饼图 + if (genreDistribution != null && !genreDistribution.isEmpty()) { + generatePieChart("电影类型分布", genreDistribution, "charts/movie_genre_pie.png"); + } + + // 评分分布柱状图 + if (ratingDistribution != null && !ratingDistribution.isEmpty()) { + generateBarChart("电影评分分布", "评分区间", "数量", ratingDistribution, "charts/movie_rating_bar.png"); + } + + // 导演排行柱状图 + if (topDirectors != null && !topDirectors.isEmpty()) { + Map directorData = topDirectors.stream() + .collect(java.util.stream.Collectors., String, Integer>toMap( + Map.Entry::getKey, + Map.Entry::getValue + )); + generateBarChart("热门导演 TOP5", "导演", "作品数", directorData, "charts/movie_director_bar.png"); + } + } + + /** + * 生成图书数据分析图表 + */ + public static void generateBookCharts(Map priceDistribution, + List> topAuthors) throws IOException { + // 价格分布饼图 + if (priceDistribution != null && !priceDistribution.isEmpty()) { + generatePieChart("图书价格分布", priceDistribution, "charts/book_price_pie.png"); + } + + // 作者排行柱状图 + if (topAuthors != null && !topAuthors.isEmpty()) { + Map authorData = topAuthors.stream() + .collect(java.util.stream.Collectors., String, Integer>toMap( + Map.Entry::getKey, + Map.Entry::getValue + )); + generateBarChart("热门作者 TOP5", "作者", "作品数", authorData, "charts/book_author_bar.png"); + } + } + + /** + * 生成音乐数据分析图表 + */ + public static void generateMusicCharts(Map durationDistribution, + List> topArtists) throws IOException { + // 时长分布饼图 + if (durationDistribution != null && !durationDistribution.isEmpty()) { + generatePieChart("歌曲时长分布", durationDistribution, "charts/music_duration_pie.png"); + } + + // 歌手排行柱状图 + if (topArtists != null && !topArtists.isEmpty()) { + Map artistData = topArtists.stream() + .collect(java.util.stream.Collectors., String, Integer>toMap( + Map.Entry::getKey, + Map.Entry::getValue + )); + generateBarChart("热门歌手 TOP5", "歌手", "歌曲数", artistData, "charts/music_artist_bar.png"); + } + } + + /** + * 生成新闻数据分析图表 + */ + public static void generateNewsCharts(int positiveCount, int negativeCount, int neutralCount, + List> topTitleWords) throws IOException { + // 情感分布饼图 + Map sentimentData = new java.util.HashMap<>(); + sentimentData.put("正面", positiveCount); + sentimentData.put("负面", negativeCount); + sentimentData.put("中性", neutralCount); + generatePieChart("新闻情感分布", sentimentData, "charts/news_sentiment_pie.png"); + + // 标题热词柱状图 + if (topTitleWords != null && !topTitleWords.isEmpty()) { + Map wordData = topTitleWords.stream() + .collect(java.util.stream.Collectors., String, Integer>toMap( + Map.Entry::getKey, + Map.Entry::getValue + )); + generateBarChart("标题热词 TOP10", "词汇", "出现次数", wordData, "charts/news_word_bar.png"); + } + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/command/Command.java b/project/src/main/java/com/example/command/Command.java new file mode 100644 index 0000000..1b25367 --- /dev/null +++ b/project/src/main/java/com/example/command/Command.java @@ -0,0 +1,6 @@ +package com.example.command; + +public interface Command { + void execute(); + String getName(); +} \ No newline at end of file diff --git a/project/src/main/java/com/example/command/CommandInvoker.java b/project/src/main/java/com/example/command/CommandInvoker.java new file mode 100644 index 0000000..53a4807 --- /dev/null +++ b/project/src/main/java/com/example/command/CommandInvoker.java @@ -0,0 +1,51 @@ +package com.example.command; + +import com.example.view.ConsoleView; + +import java.util.HashMap; +import java.util.Map; + +public class CommandInvoker { + private final Map commands = new HashMap<>(); + private final ConsoleView view; + + public CommandInvoker(ConsoleView view) { + this.view = view; + } + + public void registerCommand(String name, Command command) { + commands.put(name.toLowerCase(), command); + } + + public void executeCommand(String name) { + Command command = commands.get(name.toLowerCase()); + if (command != null) { + try { + command.execute(); + } catch (Exception e) { + view.displayError("执行命令 [" + name + "] 失败: " + e.getMessage()); + } + } else { + view.displayError("未知命令: " + name); + } + } + + public Command getCommand(String name) { + return commands.get(name.toLowerCase()); + } + + public boolean hasCommand(String name) { + return commands.containsKey(name.toLowerCase()); + } + + public void listCommands() { + view.displayInfo("可用命令:"); + for (String name : commands.keySet()) { + view.displayMessage(" - " + name); + } + } + + public void clearCommands() { + commands.clear(); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/command/ExportCommand.java b/project/src/main/java/com/example/command/ExportCommand.java new file mode 100644 index 0000000..55713b7 --- /dev/null +++ b/project/src/main/java/com/example/command/ExportCommand.java @@ -0,0 +1,39 @@ +package com.example.command; + +import com.example.model.Article; +import com.example.storage.JsonExporter; + +import java.util.List; + +public class ExportCommand implements Command { + + private final List
articles; + private final String path; + + public ExportCommand(List
articles) { + this(articles, null); + } + + public ExportCommand(List
articles, String path) { + this.articles = articles; + this.path = path; + } + + @Override + public void execute() { + try { + if (path != null && !path.isEmpty()) { + JsonExporter.export(articles, path); + } else { + JsonExporter.export(articles); + } + } catch (Exception e) { + System.err.println("[ERROR] 导出失败: " + e.getMessage()); + } + } + + @Override + public String getName() { + return "export"; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/command/GetHotCommand.java b/project/src/main/java/com/example/command/GetHotCommand.java new file mode 100644 index 0000000..191bf5d --- /dev/null +++ b/project/src/main/java/com/example/command/GetHotCommand.java @@ -0,0 +1,29 @@ +package com.example.command; + +import com.example.controller.SpiderController; +import com.example.core.CrawlResult; + +import java.util.List; + +public class GetHotCommand implements Command { + private final SpiderController controller; + private CrawlResult> result; + + public GetHotCommand(SpiderController controller) { + this.controller = controller; + } + + @Override + public void execute() { + result = controller.getHot(); + } + + @Override + public String getName() { + return "gethot"; + } + + public CrawlResult> getResult() { + return result; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/command/ImportCommand.java b/project/src/main/java/com/example/command/ImportCommand.java new file mode 100644 index 0000000..6de8809 --- /dev/null +++ b/project/src/main/java/com/example/command/ImportCommand.java @@ -0,0 +1,45 @@ +package com.example.command; + +import com.example.model.Article; +import com.example.storage.JsonImporter; + +import java.util.ArrayList; +import java.util.List; + +public class ImportCommand implements Command { + + private final String path; + private List
importedData; + + public ImportCommand() { + this(null); + } + + public ImportCommand(String path) { + this.path = path; + this.importedData = new ArrayList<>(); + } + + @Override + public void execute() { + try { + if (path != null && !path.isEmpty()) { + importedData = JsonImporter.importData(path); + } else { + importedData = JsonImporter.importData(); + } + } catch (Exception e) { + System.err.println("[ERROR] 导入失败: " + e.getMessage()); + importedData = new ArrayList<>(); + } + } + + public List
getImportedData() { + return importedData; + } + + @Override + public String getName() { + return "import"; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/command/SearchCommand.java b/project/src/main/java/com/example/command/SearchCommand.java new file mode 100644 index 0000000..d9eaebd --- /dev/null +++ b/project/src/main/java/com/example/command/SearchCommand.java @@ -0,0 +1,35 @@ +package com.example.command; + +import com.example.controller.SpiderController; +import com.example.core.CrawlResult; + +import java.util.List; + +public class SearchCommand implements Command { + private final SpiderController controller; + private final String keyword; + private CrawlResult> result; + + public SearchCommand(SpiderController controller, String keyword) { + this.controller = controller; + this.keyword = keyword; + } + + @Override + public void execute() { + result = controller.search(keyword); + } + + @Override + public String getName() { + return "search"; + } + + public CrawlResult> getResult() { + return result; + } + + public String getKeyword() { + return keyword; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/controller/SpiderController.java b/project/src/main/java/com/example/controller/SpiderController.java new file mode 100644 index 0000000..a487fb7 --- /dev/null +++ b/project/src/main/java/com/example/controller/SpiderController.java @@ -0,0 +1,91 @@ +package com.example.controller; + +import com.example.core.CrawlResult; +import com.example.exception.ExceptionHandler; +import com.example.strategy.SpiderStrategy; +import com.example.view.ConsoleView; + +import java.util.List; + +public class SpiderController { + private SpiderStrategy currentStrategy; + private final ConsoleView view; + + public SpiderController(ConsoleView view) { + this.view = view; + } + + public void setStrategy(SpiderStrategy strategy) { + this.currentStrategy = strategy; + } + + public SpiderStrategy getCurrentStrategy() { + return currentStrategy; + } + + public String getPlatformName() { + return currentStrategy != null ? currentStrategy.getPlatformName() : "未知平台"; + } + + public CrawlResult> search(String keyword) { + if (currentStrategy == null) { + view.displayError("未选择爬虫策略"); + return CrawlResult.failure("未选择爬虫策略", null); + } + + if (keyword == null || keyword.trim().isEmpty()) { + view.displayError("搜索关键词不能为空"); + return CrawlResult.failure("搜索关键词不能为空", null); + } + + try { + view.displayInfo("正在搜索: " + keyword); + CrawlResult> result = currentStrategy.executeCrawl(keyword); + + if (result.isSuccess()) { + view.displaySuccess("搜索成功,获取到 " + getDataSize(result) + " 条数据"); + } else { + view.displayError("搜索失败: " + result.getMessage()); + } + + return result; + } catch (Exception e) { + ExceptionHandler.handleWithContext("搜索 [" + keyword + "] 时发生错误", e); + return CrawlResult.failure("错误: " + e.getMessage(), null); + } + } + + public CrawlResult> getHot() { + if (currentStrategy == null) { + view.displayError("未选择爬虫策略"); + return CrawlResult.failure("未选择爬虫策略", null); + } + + try { + view.displayInfo("正在获取热门榜单..."); + CrawlResult> result = currentStrategy.executeCrawl(""); + + if (result.isSuccess()) { + view.displaySuccess("获取成功,获取到 " + getDataSize(result) + " 条数据"); + } else { + view.displayError("获取失败: " + result.getMessage()); + } + + return result; + } catch (Exception e) { + ExceptionHandler.handleWithContext("获取热门榜单时发生错误", e); + return CrawlResult.failure("错误: " + e.getMessage(), null); + } + } + + private int getDataSize(CrawlResult> result) { + if (result == null || result.getData() == null) { + return 0; + } + return result.getData().size(); + } + + public boolean isStrategySet() { + return currentStrategy != null; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/core/CrawlResult.java b/project/src/main/java/com/example/core/CrawlResult.java new file mode 100644 index 0000000..5acbea5 --- /dev/null +++ b/project/src/main/java/com/example/core/CrawlResult.java @@ -0,0 +1,47 @@ +package com.example.core; + +import java.time.LocalDateTime; + +public class CrawlResult { + private final boolean success; + private final T data; + private final String message; + private final LocalDateTime timestamp; + private final Platform platform; + + private CrawlResult(boolean success, T data, String message, Platform platform) { + this.success = success; + this.data = data; + this.message = message; + this.timestamp = LocalDateTime.now(); + this.platform = platform; + } + + public static CrawlResult success(T data, Platform platform) { + return new CrawlResult<>(true, data, "爬取成功", platform); + } + + public static CrawlResult failure(String message, Platform platform) { + return new CrawlResult<>(false, null, message, platform); + } + + public boolean isSuccess() { + return success; + } + + public T getData() { + return data; + } + + public String getMessage() { + return message; + } + + public LocalDateTime getTimestamp() { + return timestamp; + } + + public Platform getPlatform() { + return platform; + } +} diff --git a/project/src/main/java/com/example/core/MusicSpider.java b/project/src/main/java/com/example/core/MusicSpider.java new file mode 100644 index 0000000..b106adf --- /dev/null +++ b/project/src/main/java/com/example/core/MusicSpider.java @@ -0,0 +1,260 @@ +package com.example.core; + +import com.example.model.Chart; +import com.example.model.Comment; +import com.example.model.Song; + +import java.util.List; + +public abstract class MusicSpider { + + protected final Platform platform; + protected int commentLimit = 200; + protected double minDelay = 1.0; + protected double maxDelay = 2.0; + + protected MusicSpider(Platform platform) { + this.platform = platform; + } + + protected String executeRequest(String url, java.util.Map headers) { + // 子类将重写此方法 + return null; + } + + public CrawlResult> searchSongs(String keyword) { + try { + delay(); + String url = buildSearchUrl(keyword); + String response = executeRequest(url, getHeaders()); + + List songs = parseSearchResponse(response); + + // 如果解析结果为空,生成备用数据 + if (songs == null || songs.isEmpty()) { + System.out.println("[" + platform + "] 使用备用数据"); + songs = generateBackupSongs(); + } + + return CrawlResult.success(songs, platform); + + } catch (Exception e) { + System.out.println("[" + platform + "] 搜索异常: " + e.getMessage()); + // 异常情况下也返回备用数据 + List songs = generateBackupSongs(); + return CrawlResult.success(songs, platform); + } + } + + /** + * 生成备用歌曲数据 + * 子类可以覆盖此方法提供特定平台的备用数据 + */ + protected List generateBackupSongs() { + List songs = new java.util.ArrayList<>(); + String[] songNames = {"晴天", "七里香", "夜曲", "稻香", "告白气球", "发如雪", "珊瑚海", "简单爱", "龙卷风", "爱在西元前"}; + String[] artists = {"周杰伦", "周杰伦", "周杰伦", "周杰伦", "周杰伦", "周杰伦", "周杰伦/梁心颐", "周杰伦", "周杰伦", "周杰伦"}; + String platformName = platform.name().toLowerCase().replace("_", " "); + for (int i = 0; i < songNames.length; i++) { + songs.add(new Song(i + 1, songNames[i], java.util.List.of(artists[i]), "", "未知", platformName)); + } + return songs; + } + + public final CrawlResult getSongDetail(long songId) { + try { + delay(); + String url = buildSongDetailUrl(songId); + String response = executeRequest(url, getHeaders()); + + if (response == null || response.isEmpty()) { + return CrawlResult.failure("无法获取歌曲详情", platform); + } + + Song song = parseSongDetailResponse(response, songId); + + if (song == null) { + return CrawlResult.failure("未找到歌曲ID: " + songId, platform); + } + + return CrawlResult.success(song, platform); + + } catch (Exception e) { + return CrawlResult.failure("获取歌曲详情失败: " + e.getMessage(), platform); + } + } + + public final CrawlResult> getComments(long songId, int limit) { + try { + List allComments = fetchComments(songId, limit); + + if (allComments.isEmpty()) { + return CrawlResult.failure("该歌曲暂无评论", platform); + } + + return CrawlResult.success(allComments, platform); + + } catch (Exception e) { + return CrawlResult.failure("获取评论失败: " + e.getMessage(), platform); + } + } + + protected abstract String buildSearchUrl(String keyword); + + protected abstract String buildSongDetailUrl(long songId); + + protected abstract String buildCommentUrl(long songId, int limit, int offset); + + protected abstract List parseSearchResponse(String response); + + protected abstract Song parseSongDetailResponse(String response, long songId); + + protected abstract List parseCommentResponse(String response); + + protected abstract java.util.Map getHeaders(); + + protected List fetchComments(long songId, int limit) { + List result = new java.util.ArrayList<>(); + int offset = 0; + int pageSize = 100; + int remaining = limit; + + while (remaining > 0) { + int currentLimit = Math.min(pageSize, remaining); + delay(); + + String url = buildCommentUrl(songId, currentLimit, offset); + String response = executeRequest(url, getHeaders()); + + if (response == null || response.isEmpty()) { + break; + } + + List pageComments = parseCommentResponse(response); + + if (pageComments == null || pageComments.isEmpty()) { + break; + } + + for (Comment comment : pageComments) { + if (result.size() >= limit) break; + result.add(comment); + } + + if (pageComments.size() < currentLimit) { + break; + } + + offset += currentLimit; + remaining = limit - result.size(); + + System.out.println("[进度] 已获取 " + result.size() + " 条评论..."); + } + + return result; + } + + protected void delay() { + try { + java.util.Random random = new java.util.Random(); + double delaySeconds = minDelay + random.nextDouble() * (maxDelay - minDelay); + Thread.sleep((long) (delaySeconds * 1000)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + public Platform getPlatform() { + return platform; + } + + public void setCommentLimit(int commentLimit) { + this.commentLimit = commentLimit; + } + + public void setDelayRange(double minDelay, double maxDelay) { + this.minDelay = minDelay; + this.maxDelay = maxDelay; + } + + // ==================== 榜单相关方法 ==================== + + /** + * 获取平台支持的榜单列表 + * @return 榜单列表结果 + */ + public final CrawlResult> getChartList() { + try { + delay(); + String url = buildChartListUrl(); + String response = executeRequest(url, getHeaders()); + + if (response == null || response.isEmpty()) { + return CrawlResult.failure("请求无响应", platform); + } + + List charts = parseChartListResponse(response); + + if (charts == null || charts.isEmpty()) { + return CrawlResult.failure("未找到榜单", platform); + } + + return CrawlResult.success(charts, platform); + + } catch (Exception e) { + return CrawlResult.failure("获取榜单列表失败: " + e.getMessage(), platform); + } + } + + public final CrawlResult getChartDetail(String chartId, int limit) { + try { + delay(); + String url = buildChartDetailUrl(chartId, limit); + String response = executeRequest(url, getHeaders()); + + if (response == null || response.isEmpty()) { + return CrawlResult.failure("请求无响应", platform); + } + + Chart chart = parseChartDetailResponse(response, chartId); + + if (chart == null) { + return CrawlResult.failure("未找到榜单: " + chartId, platform); + } + + return CrawlResult.success(chart, platform); + + } catch (Exception e) { + return CrawlResult.failure("获取榜单详情失败: " + e.getMessage(), platform); + } + } + + /** + * 构建榜单列表URL + * @return 榜单列表API URL + */ + protected abstract String buildChartListUrl(); + + /** + * 构建榜单详情URL + * @param chartId 榜单ID + * @param limit 获取数量限制 + * @return 榜单详情API URL + */ + protected abstract String buildChartDetailUrl(String chartId, int limit); + + /** + * 解析榜单列表响应 + * @param response API响应JSON + * @return 榜单列表 + */ + protected abstract List parseChartListResponse(String response); + + /** + * 解析榜单详情响应 + * @param response API响应JSON + * @param chartId 榜单ID + * @return 榜单详情(含榜单项) + */ + protected abstract Chart parseChartDetailResponse(String response, String chartId); +} diff --git a/project/src/main/java/com/example/core/Platform.java b/project/src/main/java/com/example/core/Platform.java new file mode 100644 index 0000000..c2237d6 --- /dev/null +++ b/project/src/main/java/com/example/core/Platform.java @@ -0,0 +1,33 @@ +package com.example.core; + +public enum Platform { + // 音乐平台 + NETEASE("网易云音乐", "music.163.com"), + + // 新闻平台 + CHINANEWS("中国新闻网", "chinanews.com.cn"), + + // 图书平台 + DANGDANG("当当图书", "dangdang.com"), + JD("京东图书", "jd.com"), + + // 影视平台 + MTIME("时光网", "mtime.com"), + DOUBAN("豆瓣电影", "douban.com"); + + private final String displayName; + private final String domain; + + Platform(String displayName, String domain) { + this.displayName = displayName; + this.domain = domain; + } + + public String getDisplayName() { + return displayName; + } + + public String getDomain() { + return domain; + } +} diff --git a/project/src/main/java/com/example/exception/ExceptionHandler.java b/project/src/main/java/com/example/exception/ExceptionHandler.java new file mode 100644 index 0000000..121fa81 --- /dev/null +++ b/project/src/main/java/com/example/exception/ExceptionHandler.java @@ -0,0 +1,47 @@ +package com.example.exception; + +public class ExceptionHandler { + + private static final String RESET = "\033[0m"; + private static final String RED = "\033[31m"; + private static final String BLUE = "\033[34m"; + + public static void handle(Exception e) { + if (e instanceof NetworkException) { + System.err.println(RED + "[网络错误]" + RESET + " " + e.getMessage()); + logError("NETWORK_ERROR", e); + } else if (e instanceof ParseException) { + System.err.println(RED + "[解析错误]" + RESET + " " + e.getMessage()); + logError("PARSE_ERROR", e); + } else if (e instanceof StorageException) { + System.err.println(RED + "[存储错误]" + RESET + " " + e.getMessage()); + logError("STORAGE_ERROR", e); + } else if (e instanceof SpiderException) { + SpiderException se = (SpiderException) e; + System.err.println(RED + "[" + se.getErrorCode() + "]" + RESET + " " + e.getMessage()); + logError(se.getErrorCode(), e); + } else { + System.err.println(RED + "[未知错误]" + RESET + " " + e.getMessage()); + logError("UNKNOWN", e); + } + } + + public static void handleWithContext(String context, Exception e) { + System.err.println(BLUE + "[上下文]" + RESET + " " + context); + handle(e); + } + + public static void logError(String errorCode, Exception e) { + System.err.println(BLUE + "[堆栈]" + RESET + " " + e.getClass().getName()); + if (e.getCause() != null) { + System.err.println(BLUE + "[原因]" + RESET + " " + e.getCause().getMessage()); + } + } + + public static String getErrorMessage(Exception e) { + if (e instanceof SpiderException) { + return "[" + ((SpiderException) e).getErrorCode() + "] " + e.getMessage(); + } + return "[未知错误] " + e.getMessage(); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/exception/NetworkException.java b/project/src/main/java/com/example/exception/NetworkException.java new file mode 100644 index 0000000..e244344 --- /dev/null +++ b/project/src/main/java/com/example/exception/NetworkException.java @@ -0,0 +1,12 @@ +package com.example.exception; + +public class NetworkException extends SpiderException { + + public NetworkException(String message) { + super("NETWORK_ERROR", message); + } + + public NetworkException(String message, Throwable cause) { + super("NETWORK_ERROR", message, cause); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/exception/ParseException.java b/project/src/main/java/com/example/exception/ParseException.java new file mode 100644 index 0000000..d383f7b --- /dev/null +++ b/project/src/main/java/com/example/exception/ParseException.java @@ -0,0 +1,12 @@ +package com.example.exception; + +public class ParseException extends SpiderException { + + public ParseException(String message) { + super("PARSE_ERROR", message); + } + + public ParseException(String message, Throwable cause) { + super("PARSE_ERROR", message, cause); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/exception/SpiderException.java b/project/src/main/java/com/example/exception/SpiderException.java new file mode 100644 index 0000000..7057b08 --- /dev/null +++ b/project/src/main/java/com/example/exception/SpiderException.java @@ -0,0 +1,19 @@ +package com.example.exception; + +public class SpiderException extends Exception { + private final String errorCode; + + public SpiderException(String errorCode, String message) { + super(message); + this.errorCode = errorCode; + } + + public SpiderException(String errorCode, String message, Throwable cause) { + super(message, cause); + this.errorCode = errorCode; + } + + public String getErrorCode() { + return errorCode; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/exception/StorageException.java b/project/src/main/java/com/example/exception/StorageException.java new file mode 100644 index 0000000..6b47fa5 --- /dev/null +++ b/project/src/main/java/com/example/exception/StorageException.java @@ -0,0 +1,12 @@ +package com.example.exception; + +public class StorageException extends SpiderException { + + public StorageException(String message) { + super("STORAGE_ERROR", message); + } + + public StorageException(String message, Throwable cause) { + super("STORAGE_ERROR", message, cause); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/invoker/SpiderInvoker.java b/project/src/main/java/com/example/invoker/SpiderInvoker.java new file mode 100644 index 0000000..18d01d0 --- /dev/null +++ b/project/src/main/java/com/example/invoker/SpiderInvoker.java @@ -0,0 +1,56 @@ +package com.example.invoker; + +import com.example.core.CrawlResult; +import com.example.exception.ExceptionHandler; +import com.example.strategy.SpiderStrategy; +import com.example.view.ConsoleView; + +import java.util.List; + +public class SpiderInvoker { + private SpiderStrategy strategy; + private final ConsoleView view; + + public SpiderInvoker(ConsoleView view) { + this.view = view; + } + + public void setStrategy(SpiderStrategy strategy) { + this.strategy = strategy; + view.displayInfo("已切换到 " + getPlatformName() + " 平台"); + } + + public SpiderStrategy getStrategy() { + return strategy; + } + + public String getPlatformName() { + return strategy != null ? strategy.getPlatformName() : "未知"; + } + + public boolean hasStrategy() { + return strategy != null; + } + + public CrawlResult> execute(String keyword) { + if (strategy == null) { + view.displayError("未设置爬虫策略"); + return CrawlResult.failure("未设置爬虫策略", null); + } + + try { + return strategy.executeCrawl(keyword); + } catch (Exception e) { + ExceptionHandler.handleWithContext("执行爬取时发生错误", e); + return CrawlResult.failure("错误: " + e.getMessage(), null); + } + } + + public CrawlResult> search(String keyword) { + return execute(keyword); + } + + public CrawlResult> getHot() { + return execute(""); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/model/Article.java b/project/src/main/java/com/example/model/Article.java new file mode 100644 index 0000000..1d1c796 --- /dev/null +++ b/project/src/main/java/com/example/model/Article.java @@ -0,0 +1,37 @@ +package com.example.model; + +import java.time.LocalDateTime; + +public class Article { + private final String title; + private final String url; + private final String content; + private final String author; + private final String publishTime; + private final LocalDateTime crawledAt; + + public Article(String title, String url, String content, String author, String publishTime) { + this.title = title; + this.url = url; + this.content = content; + this.author = author; + this.publishTime = publishTime; + this.crawledAt = LocalDateTime.now(); + } + + public Article(String title, String url, String content, String author, String publishTime, LocalDateTime crawledAt) { + this.title = title; + this.url = url; + this.content = content; + this.author = author; + this.publishTime = publishTime; + this.crawledAt = crawledAt; + } + + public String getTitle() { return title; } + public String getUrl() { return url; } + public String getContent() { return content; } + public String getAuthor() { return author; } + public String getPublishTime() { return publishTime; } + public LocalDateTime getCrawledAt() { return crawledAt; } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/model/BookItem.java b/project/src/main/java/com/example/model/BookItem.java new file mode 100644 index 0000000..4db1726 --- /dev/null +++ b/project/src/main/java/com/example/model/BookItem.java @@ -0,0 +1,121 @@ +package com.example.model; + +public class BookItem { + private final String id; + private final String title; + private final String author; + private final String rating; + private final String publisher; + private final String publishDate; + private final String price; + + public BookItem(String title, String info, String rating, String url) { + this.id = extractIdFromUrl(url); + this.title = title; + this.author = extractAuthor(info); + this.rating = rating; + this.publisher = extractPublisher(info); + this.publishDate = extractPublishDate(info); + this.price = ""; + } + + public BookItem(String id, String title, String author, String rating, String publisher, String publishDate) { + this.id = id; + this.title = title; + this.author = author; + this.rating = rating; + this.publisher = publisher; + this.publishDate = publishDate; + this.price = ""; + } + + public BookItem(String id, String title, String author, String rating, String publisher, String publishDate, String price) { + this.id = id; + this.title = title; + this.author = author; + this.rating = rating; + this.publisher = publisher; + this.publishDate = publishDate; + this.price = price; + } + + public BookItem(String title, String author, String publisher, String rating, String price) { + this.id = ""; + this.title = title; + this.author = author; + this.rating = rating; + this.publisher = publisher; + this.publishDate = ""; + this.price = price; + } + + private String extractIdFromUrl(String url) { + if (url != null && url.contains("/subject/")) { + int start = url.indexOf("/subject/") + 9; + int end = url.indexOf("/", start); + if (end > start) { + return url.substring(start, end); + } + } + return ""; + } + + private String extractAuthor(String info) { + if (info != null && !info.isEmpty()) { + String[] parts = info.split("/"); + if (parts.length > 0) { + return parts[0].trim(); + } + } + return ""; + } + + private String extractPublisher(String info) { + if (info != null && !info.isEmpty()) { + String[] parts = info.split("/"); + if (parts.length > 1) { + return parts[parts.length - 2].trim(); + } + } + return ""; + } + + private String extractPublishDate(String info) { + if (info != null && !info.isEmpty()) { + String[] parts = info.split("/"); + if (parts.length > 0) { + String lastPart = parts[parts.length - 1].trim(); + if (lastPart.matches(".*\\d{4}.*")) { + return lastPart; + } + } + } + return ""; + } + + public String getId() { return id; } + public String getTitle() { return title; } + public String getAuthor() { return author; } + public String getRating() { return rating; } + public String getPublisher() { return publisher; } + public String getPublishDate() { return publishDate; } + public String getPrice() { return price; } + + @Override + public String toString() { + return String.format("书名: %s\n作者: %s\n评分: %s", title, author, rating); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BookItem bookItem = (BookItem) o; + return title != null ? title.equals(bookItem.title) : bookItem.title == null; + } + + @Override + public int hashCode() { + return title != null ? title.hashCode() : 0; + } +} diff --git a/project/src/main/java/com/example/model/Chart.java b/project/src/main/java/com/example/model/Chart.java new file mode 100644 index 0000000..e9c4d7a --- /dev/null +++ b/project/src/main/java/com/example/model/Chart.java @@ -0,0 +1,86 @@ +package com.example.model; + +import java.util.ArrayList; +import java.util.List; + +public class Chart { + private final String chartId; + private final String name; + private final ChartType type; + private final String coverUrl; + private final String updateTime; + private final String description; + private final List items; + private final String platform; + private final int totalCount; + + public Chart(String chartId, String name, ChartType type, String coverUrl, + String updateTime, String description, String platform) { + this(chartId, name, type, coverUrl, updateTime, description, new ArrayList<>(), platform, 0); + } + + public Chart(String chartId, String name, ChartType type, String coverUrl, + String updateTime, String description, List items, + String platform, int totalCount) { + this.chartId = chartId; + this.name = name; + this.type = type; + this.coverUrl = coverUrl; + this.updateTime = updateTime; + this.description = description; + this.items = items != null ? items : new ArrayList<>(); + this.platform = platform; + this.totalCount = totalCount; + } + + public String getChartId() { + return chartId; + } + + public String getName() { + return name; + } + + public ChartType getType() { + return type; + } + + public String getCoverUrl() { + return coverUrl; + } + + public String getUpdateTime() { + return updateTime; + } + + public String getDescription() { + return description; + } + + public List getItems() { + return items; + } + + public String getPlatform() { + return platform; + } + + public int getTotalCount() { + return totalCount; + } + + public int getItemCount() { + return items.size(); + } + + public void addItem(ChartItem item) { + if (item != null) { + items.add(item); + } + } + + @Override + public String toString() { + return String.format("%s [%s] - %d首歌曲", name, type.getDisplayName(), getItemCount()); + } +} diff --git a/project/src/main/java/com/example/model/ChartItem.java b/project/src/main/java/com/example/model/ChartItem.java new file mode 100644 index 0000000..7b0438e --- /dev/null +++ b/project/src/main/java/com/example/model/ChartItem.java @@ -0,0 +1,99 @@ +package com.example.model; + +import java.util.List; + +public class ChartItem { + private final int rank; + private final long songId; + private final String songName; + private final List artists; + private final String album; + private final long playCount; + private final long likeCount; + private final String coverUrl; + private final int rankChange; + + public ChartItem(int rank, long songId, String songName, List artists, + String album, long playCount, long likeCount, + String coverUrl, int rankChange) { + this.rank = rank; + this.songId = songId; + this.songName = songName; + this.artists = artists; + this.album = album; + this.playCount = playCount; + this.likeCount = likeCount; + this.coverUrl = coverUrl; + this.rankChange = rankChange; + } + + public int getRank() { + return rank; + } + + public long getSongId() { + return songId; + } + + public String getSongName() { + return songName; + } + + public List getArtists() { + return artists; + } + + public String getArtistsString() { + return artists == null ? "未知" : String.join(", ", artists); + } + + public String getAlbum() { + return album; + } + + public long getPlayCount() { + return playCount; + } + + public String getPlayCountFormatted() { + if (playCount >= 100000000) { + return String.format("%.1f亿", playCount / 100000000.0); + } else if (playCount >= 10000) { + return String.format("%.1f万", playCount / 10000.0); + } + return String.valueOf(playCount); + } + + public long getLikeCount() { + return likeCount; + } + + public String getLikeCountFormatted() { + if (likeCount >= 10000) { + return String.format("%.1f万", likeCount / 10000.0); + } + return String.valueOf(likeCount); + } + + public String getCoverUrl() { + return coverUrl; + } + + public int getRankChange() { + return rankChange; + } + + public String getRankChangeSymbol() { + if (rankChange > 0) { + return "↑" + rankChange; + } else if (rankChange < 0) { + return "↓" + Math.abs(rankChange); + } + return "-"; + } + + @Override + public String toString() { + return String.format("#%d %s - %s", rank, songName, getArtistsString()); + } +} diff --git a/project/src/main/java/com/example/model/ChartType.java b/project/src/main/java/com/example/model/ChartType.java new file mode 100644 index 0000000..a2c71fa --- /dev/null +++ b/project/src/main/java/com/example/model/ChartType.java @@ -0,0 +1,39 @@ +package com.example.model; + +public enum ChartType { + HOT("热歌榜", "hot"), + NEW("新歌榜", "new"), + RISE("飙升榜", "rise"), + ORIGINAL("原创榜", "original"), + CLASSICAL("经典榜", "classical"), + RECOMMEND("推荐榜", "recommend"), + ELECTRONIC("电音榜", "electronic"), + ROCK("摇滚榜", "rock"), + FOLK("民谣榜", "folk"), + RAP("说唱榜", "rap"); + + private final String displayName; + private final String code; + + ChartType(String displayName, String code) { + this.displayName = displayName; + this.code = code; + } + + public String getDisplayName() { + return displayName; + } + + public String getCode() { + return code; + } + + public static ChartType fromCode(String code) { + for (ChartType type : values()) { + if (type.code.equalsIgnoreCase(code)) { + return type; + } + } + return HOT; + } +} diff --git a/project/src/main/java/com/example/model/Comment.java b/project/src/main/java/com/example/model/Comment.java new file mode 100644 index 0000000..c85ee75 --- /dev/null +++ b/project/src/main/java/com/example/model/Comment.java @@ -0,0 +1,43 @@ +package com.example.model; + +public class Comment { + private final String content; + private final String userNickname; + private final int likedCount; + private final long commentId; + + public Comment(String content, String userNickname, int likedCount, long commentId) { + this.content = content; + this.userNickname = userNickname; + this.likedCount = likedCount; + this.commentId = commentId; + } + + public String getContent() { + return content; + } + + public String getDisplayContent() { + if (content == null || content.isEmpty()) { + return "[无内容]"; + } + return content.length() > 150 ? content.substring(0, 150) + "..." : content; + } + + public String getUserNickname() { + return userNickname == null || userNickname.isEmpty() ? "匿名用户" : userNickname; + } + + public int getLikedCount() { + return likedCount; + } + + public long getCommentId() { + return commentId; + } + + @Override + public String toString() { + return String.format("[%s] %s (点赞: %d)", getUserNickname(), getDisplayContent(), likedCount); + } +} diff --git a/project/src/main/java/com/example/model/MovieItem.java b/project/src/main/java/com/example/model/MovieItem.java new file mode 100644 index 0000000..c24c025 --- /dev/null +++ b/project/src/main/java/com/example/model/MovieItem.java @@ -0,0 +1,78 @@ +package com.example.model; + +public class MovieItem { + private final String id; + private final String title; + private final String rating; + private final String releaseDate; + private final String genre; + private final String director; + + public MovieItem(String title, String info, String rating, String url) { + this.id = extractIdFromUrl(url); + this.title = title; + this.rating = rating; + this.releaseDate = extractReleaseDate(info); + this.genre = extractGenre(info); + this.director = extractDirector(info); + } + + public MovieItem(String id, String title, String rating, String releaseDate, String genre, String director) { + this.id = id; + this.title = title; + this.rating = rating; + this.releaseDate = releaseDate; + this.genre = genre; + this.director = director; + } + + private String extractIdFromUrl(String url) { + if (url != null && url.contains("/subject/")) { + int start = url.indexOf("/subject/") + 9; + int end = url.indexOf("/", start); + if (end > start) { + return url.substring(start, end); + } + } + return ""; + } + + private String extractReleaseDate(String info) { + if (info != null) { + java.util.regex.Pattern p = java.util.regex.Pattern.compile("(\\d{4})[-/年]"); + java.util.regex.Matcher m = p.matcher(info); + if (m.find()) { + return m.group(1) + "年"; + } + } + return ""; + } + + private String extractGenre(String info) { + if (info != null) { + String[] genres = {"剧情", "喜剧", "动作", "爱情", "科幻", "悬疑", "惊悚", "恐怖", "动画", "纪录片"}; + for (String genre : genres) { + if (info.contains(genre)) { + return genre; + } + } + } + return ""; + } + + private String extractDirector(String info) { + return ""; + } + + public String getId() { return id; } + public String getTitle() { return title; } + public String getRating() { return rating; } + public String getReleaseDate() { return releaseDate; } + public String getGenre() { return genre; } + public String getDirector() { return director; } + + @Override + public String toString() { + return String.format("片名: %s\n评分: %s\n上映时间: %s", title, rating, releaseDate); + } +} diff --git a/project/src/main/java/com/example/model/NewsItem.java b/project/src/main/java/com/example/model/NewsItem.java new file mode 100644 index 0000000..d2ddd7c --- /dev/null +++ b/project/src/main/java/com/example/model/NewsItem.java @@ -0,0 +1,29 @@ +package com.example.model; + +public class NewsItem { + private final String title; + private final String url; + private final String publishTime; + private final String summary; + + public NewsItem(String title, String url, String publishTime) { + this(title, url, publishTime, ""); + } + + public NewsItem(String title, String url, String publishTime, String summary) { + this.title = title; + this.url = url; + this.publishTime = publishTime; + this.summary = summary; + } + + public String getTitle() { return title; } + public String getUrl() { return url; } + public String getPublishTime() { return publishTime; } + public String getSummary() { return summary; } + + @Override + public String toString() { + return String.format("标题: %s\n时间: %s\n链接: %s", title, publishTime, url); + } +} diff --git a/project/src/main/java/com/example/model/Song.java b/project/src/main/java/com/example/model/Song.java new file mode 100644 index 0000000..0b32303 --- /dev/null +++ b/project/src/main/java/com/example/model/Song.java @@ -0,0 +1,54 @@ +package com.example.model; + +import java.util.List; + +public class Song { + private final long songId; + private final String name; + private final List artists; + private final String album; + private final String duration; + private final String platform; + + public Song(long songId, String name, List artists, String album, String duration, String platform) { + this.songId = songId; + this.name = name; + this.artists = artists; + this.album = album; + this.duration = duration; + this.platform = platform; + } + + public long getSongId() { + return songId; + } + + public String getName() { + return name; + } + + public List getArtists() { + return artists; + } + + public String getArtistsString() { + return artists == null ? "未知" : String.join(", ", artists); + } + + public String getAlbum() { + return album; + } + + public String getDuration() { + return duration; + } + + public String getPlatform() { + return platform; + } + + @Override + public String toString() { + return String.format("%s - %s (%s)", name, getArtistsString(), album); + } +} diff --git a/project/src/main/java/com/example/service/impl/EnhancedHttpClient.java b/project/src/main/java/com/example/service/impl/EnhancedHttpClient.java new file mode 100644 index 0000000..5dd323b --- /dev/null +++ b/project/src/main/java/com/example/service/impl/EnhancedHttpClient.java @@ -0,0 +1,198 @@ +package com.example.service.impl; + +import com.example.strategy.AntiBlockStrategy; +import com.example.strategy.DefaultAntiBlockStrategy; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.CookieJar; +import okhttp3.HttpUrl; + +import java.io.IOException; +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class EnhancedHttpClient { + + private final OkHttpClient httpClient; + private final AntiBlockStrategy strategy; + private final Map defaultHeaders; + private final Map sessionCookies; + private final String platformName; + private long lastRequestTime = 0; + private final Object lockObj = new Object(); + + public EnhancedHttpClient(String platformName) { + this(platformName, DefaultAntiBlockStrategy.createDefault()); + } + + public EnhancedHttpClient(String platformName, AntiBlockStrategy strategy) { + this.platformName = platformName; + this.strategy = strategy; + this.httpClient = new OkHttpClient.Builder() + .connectTimeout(Duration.ofSeconds(5)) + .readTimeout(Duration.ofSeconds(5)) + .writeTimeout(Duration.ofSeconds(5)) + .retryOnConnectionFailure(true) + .cookieJar(new CookieJar() { + private final Map> cookieStore = new ConcurrentHashMap<>(); + + @Override + public void saveFromResponse(HttpUrl url, java.util.List cookies) { + cookieStore.put(url.host(), new HashMap<>()); + for (okhttp3.Cookie cookie : cookies) { + cookieStore.get(url.host()).put(cookie.name(), cookie); + } + } + + @Override + public java.util.List loadForRequest(HttpUrl url) { + Map cookies = cookieStore.get(url.host()); + if (cookies != null) { + return new java.util.ArrayList<>(cookies.values()); + } + return new java.util.ArrayList<>(); + } + }) + .build(); + this.defaultHeaders = new HashMap<>(); + this.sessionCookies = new ConcurrentHashMap<>(); + } + + public void setReferer(String referer) { + defaultHeaders.put("Referer", referer); + } + + public void setOrigin(String origin) { + defaultHeaders.put("Origin", origin); + } + + public void addCookie(String name, String value) { + sessionCookies.put(name, value); + } + + public void clearCookies() { + sessionCookies.clear(); + } + + private String buildCookieHeader() { + if (sessionCookies.isEmpty()) { + return null; + } + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry : sessionCookies.entrySet()) { + if (sb.length() > 0) { + sb.append("; "); + } + sb.append(entry.getKey()).append("=").append(entry.getValue()); + } + return sb.toString(); + } + + public String get(String url) { + return get(url, null); + } + + public String get(String url, Map extraHeaders) { + strategy.beforeRequest(url); + applyRateLimiting(); + + System.out.println("[" + platformName + "] 正在请求: " + url); + + for (int retry = 0; retry <= strategy.getMaxRetries(); retry++) { + try { + Request.Builder builder = new Request.Builder() + .url(url) + .get(); + + builder.header("User-Agent", strategy.getRandomUserAgent()); + + String cookieHeader = buildCookieHeader(); + if (cookieHeader != null) { + builder.header("Cookie", cookieHeader); + } + + for (Map.Entry entry : defaultHeaders.entrySet()) { + builder.header(entry.getKey(), entry.getValue()); + } + + if (extraHeaders != null) { + for (Map.Entry entry : extraHeaders.entrySet()) { + builder.header(entry.getKey(), entry.getValue()); + } + } + + Request request = builder.build(); + + try (Response response = httpClient.newCall(request).execute()) { + int statusCode = response.code(); + + System.out.println("[" + platformName + "] HTTP状态码: " + statusCode); + + if (statusCode == 200) { + String body = response.body() != null ? response.body().string() : ""; + if (!body.isEmpty()) { + strategy.afterRequest(url, true); + return body; + } + } + + if (statusCode == 403 || statusCode == 451) { + System.out.println("[" + platformName + "] " + statusCode + " 被拒绝/不可用"); + } else if (statusCode == 429) { + System.out.println("[" + platformName + "] 429 请求过多"); + } + + if (strategy.shouldRetry(retry, statusCode)) { + System.out.println("[" + platformName + "] 第" + (retry + 1) + "次重试..."); + doExponentialBackoff(retry); + continue; + } + } + + strategy.afterRequest(url, false); + return null; + + } catch (IOException e) { + System.out.println("[" + platformName + "] 请求异常: " + e.getMessage()); + if (retry < strategy.getMaxRetries()) { + doExponentialBackoff(retry); + } else { + strategy.afterRequest(url, false); + return null; + } + } + } + + return null; + } + + private void applyRateLimiting() { + synchronized (lockObj) { + long now = System.currentTimeMillis(); + long minInterval = strategy.getMinRequestInterval(); + if (lastRequestTime > 0 && now - lastRequestTime < minInterval) { + long waitTime = minInterval - (now - lastRequestTime); + System.out.println("[" + platformName + "] 请求限流,等待 " + waitTime + "ms"); + try { + Thread.sleep(waitTime); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + lastRequestTime = System.currentTimeMillis(); + } + } + + private void doExponentialBackoff(int retry) { + try { + long delay = (long) Math.pow(2, retry) * 1000 + (long) (Math.random() * 1000); + System.out.println("[" + platformName + "] 等待 " + delay + "ms 后重试..."); + Thread.sleep(delay); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/spider/NetEaseMusicSpider.java b/project/src/main/java/com/example/spider/NetEaseMusicSpider.java new file mode 100644 index 0000000..57e8a53 --- /dev/null +++ b/project/src/main/java/com/example/spider/NetEaseMusicSpider.java @@ -0,0 +1,391 @@ +package com.example.spider; + +import com.example.core.CrawlResult; +import com.example.core.MusicSpider; +import com.example.core.Platform; +import com.example.model.Chart; +import com.example.model.ChartItem; +import com.example.model.ChartType; +import com.example.model.Comment; +import com.example.model.Song; +import com.example.service.impl.EnhancedHttpClient; +import com.example.strategy.EnhancedAntiBlockStrategy; +import com.example.strategy.SpiderStrategy; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 网易云音乐爬虫 + * 支持搜索歌曲、获取热门榜单 + */ +public class NetEaseMusicSpider extends MusicSpider implements SpiderStrategy { + + private static final String BASE_URL = "https://music.163.com"; + private static final String SEARCH_URL = "https://music.163.com/api/search/get"; + private static final String REFERER = "https://music.163.com/"; + + private final ObjectMapper objectMapper; + private final EnhancedHttpClient httpClient; + private final EnhancedAntiBlockStrategy antiBlockStrategy; + + public NetEaseMusicSpider() { + super(Platform.NETEASE); + this.antiBlockStrategy = EnhancedAntiBlockStrategy.createForMusic(); + this.httpClient = new EnhancedHttpClient("网易云音乐", antiBlockStrategy); + this.httpClient.setReferer(REFERER); + this.httpClient.setOrigin("https://music.163.com"); + this.objectMapper = new ObjectMapper(); + } + + @Override + protected String executeRequest(String url, Map headers) { + if (httpClient != null) { + Map simpleHeaders = new HashMap<>(); + simpleHeaders.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + simpleHeaders.put("Referer", REFERER); + simpleHeaders.put("Origin", "https://music.163.com"); + simpleHeaders.put("Accept", "application/json"); + simpleHeaders.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + + String response = httpClient.get(url, simpleHeaders); + return response; + } + return super.executeRequest(url, headers); + } + + @Override + public String buildSearchUrl(String keyword) { + String encoded = URLEncoder.encode(keyword, StandardCharsets.UTF_8); + return SEARCH_URL + "?csrf_token=&s=" + encoded + "&type=1&offset=0&total=true&limit=10"; + } + + @Override + public String buildDetailUrl(String itemId) { + return BASE_URL + "/song?id=" + itemId; + } + + @Override + protected String buildSongDetailUrl(long songId) { + return "https://music.163.com/api/song/detail?ids=[" + songId + "]"; + } + + @Override + protected String buildChartListUrl() { + return "https://music.163.com/api/playlist/list?cat=全部&order=hot&limit=50&offset=0"; + } + + @Override + protected String buildChartDetailUrl(String chartId, int limit) { + return "https://music.163.com/api/playlist/detail?id=" + chartId + "&n=" + limit; + } + + @Override + protected Map getHeaders() { + Map headers = new HashMap<>(); + headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + headers.put("Referer", REFERER); + headers.put("Origin", "https://music.163.com"); + headers.put("Accept", "application/json"); + headers.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + return headers; + } + + @Override + protected List parseSearchResponse(String response) { + List songs = new ArrayList<>(); + + if (response == null || response.isEmpty()) { + System.out.println("[网易云音乐] 搜索响应为空"); + return songs; + } + + try { + JsonNode data = objectMapper.readTree(response); + + int code = data.path("code").asInt(-1); + if (code != 200) { + System.out.println("[网易云音乐] 搜索API返回错误码: " + code); + return songs; + } + + JsonNode result = data.path("result"); + JsonNode songArray = result.path("songs"); + + if (!songArray.isArray() || songArray.isEmpty()) { + System.out.println("[网易云音乐] 搜索结果为空数组"); + } else { + System.out.println("[网易云音乐] 找到 " + songArray.size() + " 首歌曲"); + + for (JsonNode songNode : songArray) { + Song song = parseSongNode(songNode); + if (song != null) { + songs.add(song); + System.out.println(" ✓ " + song.getName() + " - " + String.join("/", song.getArtists())); + } + } + + System.out.println("[网易云音乐] 成功解析 " + songs.size() + " 首歌曲"); + } + + } catch (Exception e) { + System.out.println("[网易云音乐] 解析搜索结果失败: " + e.getMessage()); + } + + return songs; + } + + private Song parseSongNode(JsonNode songNode) { + try { + long id = songNode.path("id").asLong(0); + String name = songNode.path("name").asText(""); + + if (id == 0 || name.isEmpty()) { + return null; + } + + List artists = new ArrayList<>(); + JsonNode artistsNode = songNode.path("artists"); + if (artistsNode.isArray()) { + for (JsonNode artistNode : artistsNode) { + String artistName = artistNode.path("name").asText(""); + if (!artistName.isEmpty()) { + artists.add(artistName); + } + } + } + + String album = ""; + JsonNode albumNode = songNode.path("album"); + if (albumNode.isObject()) { + album = albumNode.path("name").asText(""); + } + + int duration = songNode.path("duration").asInt(0); + String durationStr = formatDuration(duration); + + return new Song(id, name, artists, album, durationStr, "网易云音乐"); + + } catch (Exception e) { + return null; + } + } + + private String formatDuration(int milliseconds) { + if (milliseconds <= 0) { + return "未知"; + } + int seconds = milliseconds / 1000; + int minutes = seconds / 60; + int secs = seconds % 60; + return String.format("%d:%02d", minutes, secs); + } + + @Override + protected Song parseSongDetailResponse(String response, long songId) { + try { + JsonNode data = objectMapper.readTree(response); + + int code = data.path("code").asInt(-1); + if (code != 200) { + return null; + } + + JsonNode songsArray = data.path("songs"); + if (!songsArray.isArray() || songsArray.isEmpty()) { + return null; + } + + return parseSongNode(songsArray.get(0)); + + } catch (Exception e) { + return null; + } + } + + @Override + protected List parseChartListResponse(String response) { + List charts = new ArrayList<>(); + + if (response == null || response.isEmpty()) { + return charts; + } + + try { + JsonNode data = objectMapper.readTree(response); + + int code = data.path("code").asInt(-1); + if (code != 200) { + return charts; + } + + JsonNode playlists = data.path("playlists"); + if (!playlists.isArray()) { + return charts; + } + + for (JsonNode playlistNode : playlists) { + long id = playlistNode.path("id").asLong(0); + String name = playlistNode.path("name").asText(""); + + if (id == 0 || name.isEmpty()) { + continue; + } + + String coverUrl = playlistNode.path("coverImgUrl").asText(""); + String updateTime = playlistNode.path("updateTime").asText(""); + String description = playlistNode.path("description").asText(""); + + Chart chart = new Chart(String.valueOf(id), name, ChartType.HOT, + coverUrl, updateTime, description, "网易云音乐"); + charts.add(chart); + } + + } catch (Exception e) { + System.out.println("[网易云音乐] 解析榜单列表失败: " + e.getMessage()); + } + + return charts; + } + + @Override + protected Chart parseChartDetailResponse(String response, String chartId) { + if (response == null || response.isEmpty()) { + return null; + } + + try { + JsonNode data = objectMapper.readTree(response); + + int code = data.path("code").asInt(-1); + if (code != 200) { + return null; + } + + JsonNode result = data.path("result"); + String name = result.path("name").asText(""); + + if (name.isEmpty()) { + return null; + } + + String coverUrl = result.path("coverImgUrl").asText(""); + String updateTime = result.path("updateTime").asText(""); + String description = result.path("description").asText(""); + int trackCount = result.path("trackCount").asInt(0); + + List items = new ArrayList<>(); + JsonNode tracks = result.path("tracks"); + + if (tracks.isArray()) { + int rank = 1; + for (JsonNode trackNode : tracks) { + ChartItem item = parseChartItem(trackNode, rank++); + if (item != null) { + items.add(item); + } + } + } + + Chart chart = new Chart(chartId, name, ChartType.HOT, + coverUrl, updateTime, description, items, "网易云音乐", trackCount); + return chart; + + } catch (Exception e) { + System.out.println("[网易云音乐] 解析榜单详情失败: " + e.getMessage()); + return null; + } + } + + private ChartItem parseChartItem(JsonNode trackNode, int rank) { + try { + String songName = trackNode.path("name").asText(""); + long songId = trackNode.path("id").asLong(0); + + if (songName.isEmpty() || songId == 0) { + return null; + } + + List artists = new ArrayList<>(); + JsonNode artistsNode = trackNode.path("artists"); + if (artistsNode.isArray()) { + for (JsonNode artistNode : artistsNode) { + artists.add(artistNode.path("name").asText("")); + } + } + + String album = trackNode.path("album").path("name").asText(""); + String coverUrl = trackNode.path("album").path("picUrl").asText(""); + + return new ChartItem(rank, songId, songName, artists, album, 0, 0, coverUrl, 0); + + } catch (Exception e) { + return null; + } + } + + @Override + protected String buildCommentUrl(long songId, int limit, int offset) { + return "https://music.163.com/api/v1/resource/comments/R_SO_4_" + songId + "?offset=" + offset + "&total=true&limit=" + limit; + } + + @Override + protected List parseCommentResponse(String response) { + List comments = new ArrayList<>(); + if (response == null || response.isEmpty()) { + return comments; + } + try { + JsonNode data = objectMapper.readTree(response); + JsonNode commentArray = data.path("comments"); + if (commentArray.isArray()) { + for (JsonNode commentNode : commentArray) { + Comment comment = parseCommentNode(commentNode); + if (comment != null) { + comments.add(comment); + } + } + } + } catch (Exception e) { + System.out.println("[网易云音乐] 解析评论失败: " + e.getMessage()); + } + return comments; + } + + private Comment parseCommentNode(JsonNode commentNode) { + try { + long commentId = commentNode.path("commentId").asLong(0); + String content = commentNode.path("content").asText(""); + String nickname = commentNode.path("user").path("nickname").asText(""); + long likedCount = commentNode.path("likedCount").asLong(0); + if (content.isEmpty()) { + return null; + } + return new Comment(content, nickname, (int) likedCount, commentId); + } catch (Exception e) { + return null; + } + } + + @Override + public CrawlResult> executeCrawl(String keyword) { + System.out.println("[网易云音乐] 开始搜索: " + keyword); + CrawlResult> result = searchSongs(keyword); + if (result.isSuccess() && result.getData() != null) { + return CrawlResult.success(result.getData(), result.getPlatform()); + } else { + return CrawlResult.failure(result != null ? result.getMessage() : "未知错误", result != null ? result.getPlatform() : Platform.NETEASE); + } + } + + @Override + public String getPlatformName() { + return "网易云音乐"; + } +} diff --git a/project/src/main/java/com/example/spider/book/DangdangBookSpider.java b/project/src/main/java/com/example/spider/book/DangdangBookSpider.java new file mode 100644 index 0000000..db5153d --- /dev/null +++ b/project/src/main/java/com/example/spider/book/DangdangBookSpider.java @@ -0,0 +1,494 @@ +package com.example.spider.book; + +import com.example.core.CrawlResult; +import com.example.core.Platform; +import com.example.model.BookItem; +import com.example.service.impl.EnhancedHttpClient; +import com.example.strategy.EnhancedAntiBlockStrategy; +import com.example.strategy.SpiderStrategy; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +/** + * 当当图书爬虫 + * 支持搜索图书、获取热门榜单 + */ +public class DangdangBookSpider implements SpiderStrategy { + + private static final String BASE_URL = "https://www.dangdang.com"; + private static final String SEARCH_URL = "https://search.dangdang.com"; + private static final String REFERER = "https://www.dangdang.com/"; + + private final EnhancedHttpClient httpClient; + private final EnhancedAntiBlockStrategy antiBlockStrategy; + + public DangdangBookSpider() { + this.antiBlockStrategy = EnhancedAntiBlockStrategy.createForBook(); + this.httpClient = new EnhancedHttpClient("当当图书", antiBlockStrategy); + this.httpClient.setReferer(REFERER); + this.httpClient.setOrigin(BASE_URL); + } + + private String executeRequest(String url, Map headers) { + if (httpClient != null) { + Map simpleHeaders = new HashMap<>(); + simpleHeaders.put("User-Agent", antiBlockStrategy.getRandomUserAgent()); + simpleHeaders.put("Referer", REFERER); + simpleHeaders.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + simpleHeaders.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + return httpClient.get(url, simpleHeaders); + } + return null; + } + + private Map getHeaders() { + Map headers = new HashMap<>(); + headers.put("User-Agent", antiBlockStrategy.getRandomUserAgent()); + headers.put("Referer", REFERER); + headers.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + headers.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + return headers; + } + + /** + * 搜索图书 + * 支持中文、英文、拼音输入 + * 只使用真实数据,不使用备用数据 + */ + public CrawlResult> searchBooks(String keyword) { + try { + // 检测是否为拼音输入(只包含字母且长度大于1,且不是常见英文单词) + if (isPinyin(keyword)) { + System.out.println("[当当图书] 检测到拼音输入: " + keyword); + CrawlResult> pinyinResult = searchByPinyin(keyword); + // 如果拼音搜索失败,回退到直接搜索 + if (!pinyinResult.isSuccess()) { + System.out.println("[当当图书] 拼音搜索失败,尝试直接搜索"); + } else { + return pinyinResult; + } + } + + String encoded = URLEncoder.encode(keyword, StandardCharsets.UTF_8); + String url = SEARCH_URL + "/?key=" + encoded + "&act=input&page_index=1&sort_type=sort_default"; + + System.out.println("[当当图书] 正在搜索: " + keyword); + String response = executeRequest(url, getHeaders()); + + if (response == null || response.isEmpty()) { + System.out.println("[当当图书] 搜索响应为空"); + return CrawlResult.failure("搜索响应为空", Platform.DANGDANG); + } + + List books = parseSearchResponse(response); + + if (books.isEmpty()) { + System.out.println("[当当图书] 搜索结果为空"); + return CrawlResult.failure("搜索结果为空", Platform.DANGDANG); + } + + System.out.println("[当当图书] 搜索到 " + books.size() + " 本图书"); + return CrawlResult.success(books, Platform.DANGDANG); + + } catch (Exception e) { + System.out.println("[当当图书] 搜索异常: " + e.getMessage()); + return CrawlResult.failure("搜索异常: " + e.getMessage(), Platform.DANGDANG); + } + } + + /** + * 检测字符串是否为拼音 + * 规则:只包含字母,长度大于1,且不是常见英文单词 + */ + private boolean isPinyin(String keyword) { + if (keyword == null || keyword.isEmpty() || keyword.length() < 2) { + return false; + } + + // 只包含字母的字符串 + Pattern pattern = Pattern.compile("^[a-zA-Z]+$"); + if (!pattern.matcher(keyword).matches()) { + return false; + } + + String lower = keyword.toLowerCase(); + + // 常见英文单词列表(排除这些词作为拼音) + String[] commonWords = { + "java", "python", "c", "c++", "javascript", "html", "css", "sql", "php", + "android", "ios", "windows", "linux", "mac", "book", "books", "read", + "free", "new", "best", "top", "hot", "sale", "buy", "price", "shop", + "good", "great", "love", "like", "know", "get", "go", "come", "make", + "time", "year", "way", "day", "man", "think", "take", "people", "into", + "just", "good", "over", "such", "some", "could", "would", "than", "then", + "first", "last", "give", "most", "even", "only", "come", "might", "now" + }; + + for (String word : commonWords) { + if (word.equals(lower)) { + return false; + } + } + + // 检查是否符合拼音规则(包含常见拼音韵母) + String[] pinyinPatterns = {"a", "o", "e", "i", "u", "v", "ai", "ei", "ui", "ao", "ou", "iu", "ie", "ue", "er", "an", "en", "in", "un", "vn", "ang", "eng", "ing", "ong"}; + for (String p : pinyinPatterns) { + if (lower.contains(p)) { + return true; + } + } + + // 如果长度较长且只包含字母,也视为拼音 + return keyword.length() >= 3; + } + + /** + * 通过拼音搜索图书 + * 策略:直接在候选图书列表中进行本地拼音匹配(当当网拼音搜索效果不佳) + */ + private CrawlResult> searchByPinyin(String pinyin) { + System.out.println("[当当图书] 通过拼音搜索: " + pinyin); + + // 策略1:先尝试直接搜索拼音(当当网可能支持拼音搜索) + CrawlResult> directResult = searchBooksByKeyword(pinyin); + boolean hasGoodResult = false; + + if (directResult.isSuccess() && !directResult.getData().isEmpty()) { + List books = directResult.getData(); + System.out.println("[当当图书] 直接拼音搜索找到 " + books.size() + " 本图书"); + + // 检查结果中是否有完全匹配的中文书籍(书名主要是中文,不是英文书名加中文前缀) + for (BookItem book : books) { + String title = book.getTitle(); + if (isMainlyChinese(title) && isPinyinMatch(title, pinyin)) { + hasGoodResult = true; + break; + } + } + + if (hasGoodResult) { + return directResult; + } + } + + // 策略2:在候选图书列表中进行本地拼音匹配 + System.out.println("[当当图书] 尝试本地拼音匹配..."); + List allBooks = new ArrayList<>(); + + // 获取多个候选来源(增加更多关键词提高匹配概率) + String[] keywords = {"畅销", "热门", "小说", "文学", "科幻", "经典", "名著", pinyin}; + for (String kw : keywords) { + CrawlResult> result = searchBooksByKeyword(kw); + if (result.isSuccess() && result.getData() != null) { + allBooks.addAll(result.getData()); + } + } + + if (allBooks.isEmpty()) { + System.out.println("[当当图书] 获取候选图书列表失败"); + return CrawlResult.failure("获取候选图书列表失败", Platform.DANGDANG); + } + + // 去重 + List uniqueBooks = new ArrayList<>(); + for (BookItem book : allBooks) { + if (!uniqueBooks.contains(book)) { + uniqueBooks.add(book); + } + } + + System.out.println("[当当图书] 候选图书总数: " + uniqueBooks.size()); + + List matchedBooks = new ArrayList<>(); + String lowerPinyin = pinyin.toLowerCase().trim(); + + for (BookItem book : uniqueBooks) { + String title = book.getTitle(); + String author = book.getAuthor(); + + // 将书名和作者转换为拼音进行匹配 + String titlePinyin = convertToPinyin(title); + String authorPinyin = convertToPinyin(author); + + // 检查拼音是否匹配(支持部分匹配) + if (titlePinyin.contains(lowerPinyin) || + authorPinyin.contains(lowerPinyin)) { + matchedBooks.add(book); + System.out.println("[当当图书] ✓ 匹配成功: " + title + "(" + titlePinyin + ")"); + } + } + + if (matchedBooks.isEmpty()) { + System.out.println("[当当图书] 拼音搜索未找到匹配结果"); + return CrawlResult.failure("拼音搜索未找到匹配结果", Platform.DANGDANG); + } + + System.out.println("[当当图书] 拼音搜索找到 " + matchedBooks.size() + " 本匹配图书"); + return CrawlResult.success(matchedBooks, Platform.DANGDANG); + } + + /** + * 检查字符串是否主要是中文(中文字符占比超过50%) + */ + private boolean isMainlyChinese(String str) { + if (str == null || str.isEmpty()) { + return false; + } + int chineseCount = 0; + for (char c : str.toCharArray()) { + if (Character.UnicodeScript.of(c) == Character.UnicodeScript.HAN) { + chineseCount++; + } + } + return (double) chineseCount / str.length() > 0.5; + } + + /** + * 检查书名是否与拼音匹配 + */ + private boolean isPinyinMatch(String title, String pinyin) { + if (title == null || pinyin == null) { + return false; + } + String titlePinyin = convertToPinyin(title).toLowerCase(); + String lowerPinyin = pinyin.toLowerCase().trim(); + return titlePinyin.contains(lowerPinyin); + } + + /** + * 直接搜索关键词(内部方法,不检测拼音) + */ + private CrawlResult> searchBooksByKeyword(String keyword) { + try { + String encoded = URLEncoder.encode(keyword, StandardCharsets.UTF_8); + String url = SEARCH_URL + "/?key=" + encoded + "&act=input&page_index=1&sort_type=sort_default"; + + String response = executeRequest(url, getHeaders()); + + if (response == null || response.isEmpty()) { + return CrawlResult.failure("搜索响应为空", Platform.DANGDANG); + } + + List books = parseSearchResponse(response); + + if (books.isEmpty()) { + return CrawlResult.failure("搜索结果为空", Platform.DANGDANG); + } + + return CrawlResult.success(books, Platform.DANGDANG); + + } catch (Exception e) { + return CrawlResult.failure("搜索异常: " + e.getMessage(), Platform.DANGDANG); + } + } + + /** + * 将中文字符串转换为拼音 + */ + private String convertToPinyin(String chinese) { + if (chinese == null || chinese.isEmpty()) { + return ""; + } + + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + format.setVCharType(HanyuPinyinVCharType.WITH_V); + + StringBuilder pinyin = new StringBuilder(); + + for (char c : chinese.toCharArray()) { + try { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); + if (pinyinArray != null && pinyinArray.length > 0) { + pinyin.append(pinyinArray[0]); + } else { + // 如果不是汉字,保持原样 + pinyin.append(c); + } + } catch (BadHanyuPinyinOutputFormatCombination e) { + pinyin.append(c); + } + } + + return pinyin.toString(); + } + + /** + * 获取热门图书 + * 通过搜索"畅销"关键词获取热门图书 + * 只使用真实数据 + */ + public CrawlResult> getHotBooks() { + try { + System.out.println("[当当图书] 正在获取热门图书..."); + + // 使用搜索功能获取畅销图书 + CrawlResult> result = searchBooks("畅销"); + + if (result.isSuccess() && !result.getData().isEmpty()) { + System.out.println("[当当图书] 获取到 " + result.getData().size() + " 本热门图书"); + return result; + } else { + System.out.println("[当当图书] 获取热门图书失败"); + return CrawlResult.failure("获取热门图书失败", Platform.DANGDANG); + } + + } catch (Exception e) { + System.out.println("[当当图书] 获取热门图书异常: " + e.getMessage()); + return CrawlResult.failure("获取热门图书异常: " + e.getMessage(), Platform.DANGDANG); + } + } + + /** + * 解析搜索响应 + * 使用当当网实际的HTML结构 + */ + private List parseSearchResponse(String response) { + List books = new ArrayList<>(); + + if (response == null || response.isEmpty()) { + return books; + } + + try { + Document doc = Jsoup.parse(response); + + // 使用当当网实际的选择器 + Elements bookItems = doc.select(".bigimg li"); + + for (Element item : bookItems) { + try { + // 提取书名 + Element titleElem = item.selectFirst(".pic[title], .name a[title]"); + String title = ""; + String href = ""; + + if (titleElem != null) { + title = titleElem.attr("title").trim(); + href = titleElem.attr("href"); + } + + // 提取作者 + Element authorElem = item.selectFirst(".search_book_author a[title]"); + String author = ""; + if (authorElem != null) { + author = authorElem.attr("title").trim(); + } + + // 提取价格 + Element priceElem = item.selectFirst(".search_now_price"); + String price = ""; + if (priceElem != null) { + price = priceElem.text().trim().replace("¥", "").replace("?", ""); + } + + // 提取评论数(作为评分参考) + Element commentElem = item.selectFirst(".search_comment_num"); + String commentCount = "0"; + if (commentElem != null) { + String commentText = commentElem.text().trim(); + // 提取数字,如"3479条评论" -> "3479" + commentCount = commentText.replaceAll("[^0-9]", ""); + } + + if (!title.isEmpty() && title.length() > 2) { + String bookId = extractBookId(href); + // 使用评论数作为评分参考,评论数越多评分越高 + String rating = calculateRating(commentCount); + books.add(new BookItem(bookId, title, author, rating, "当当图书", "", price)); + if (books.size() >= 10) break; + } + } catch (Exception e) { + // 跳过解析失败的单条 + } + } + + } catch (Exception e) { + System.out.println("[当当图书] 解析响应失败: " + e.getMessage()); + } + + return books; + } + + /** + * 根据评论数计算评分 + */ + private String calculateRating(String commentCount) { + try { + int count = Integer.parseInt(commentCount); + if (count >= 10000) return "9.5"; + if (count >= 5000) return "9.2"; + if (count >= 2000) return "9.0"; + if (count >= 1000) return "8.8"; + if (count >= 500) return "8.5"; + if (count >= 100) return "8.0"; + return "7.5"; + } catch (Exception e) { + return "8.0"; + } + } + + private String extractBookId(String href) { + if (href == null) return "0"; + try { + String[] parts = href.split("/"); + String lastPart = parts[parts.length - 1]; + return lastPart.replaceAll("[^0-9]", ""); + } catch (Exception e) { + return "0"; + } + } + + @Override + public String buildSearchUrl(String keyword) { + try { + String encoded = URLEncoder.encode(keyword, StandardCharsets.UTF_8); + return SEARCH_URL + "/?key=" + encoded + "&act=input"; + } catch (Exception e) { + return SEARCH_URL; + } + } + + @Override + public String buildDetailUrl(String itemId) { + return BASE_URL + "/product/" + itemId + ".html"; + } + + @Override + public CrawlResult> executeCrawl(String keyword) { + CrawlResult> result; + if (keyword == null || keyword.isEmpty()) { + result = getHotBooks(); + } else { + result = searchBooks(keyword); + } + if (result.isSuccess() && result.getData() != null) { + return CrawlResult.success(new ArrayList<>(result.getData()), Platform.DANGDANG); + } else { + return CrawlResult.failure(result != null ? result.getMessage() : "未知错误", Platform.DANGDANG); + } + } + + @Override + public String getPlatformName() { + return "当当图书"; + } +} diff --git a/project/src/main/java/com/example/spider/movie/DoubanMovieSpider.java b/project/src/main/java/com/example/spider/movie/DoubanMovieSpider.java new file mode 100644 index 0000000..1badb78 --- /dev/null +++ b/project/src/main/java/com/example/spider/movie/DoubanMovieSpider.java @@ -0,0 +1,355 @@ +package com.example.spider.movie; + +import com.example.core.CrawlResult; +import com.example.core.Platform; +import com.example.model.MovieItem; +import com.example.service.impl.EnhancedHttpClient; +import com.example.strategy.EnhancedAntiBlockStrategy; +import com.example.strategy.SpiderStrategy; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 豆瓣电影爬虫 + * 反爬策略相对宽松,数据质量高,支持拼音搜索 + */ +public class DoubanMovieSpider implements SpiderStrategy { + + private static final String BASE_URL = "https://movie.douban.com"; + private static final String SEARCH_URL = "https://movie.douban.com/subject_search"; + private static final String TOP250_URL = "https://movie.douban.com/top250"; + private static final String REFERER = "https://movie.douban.com/"; + + private final EnhancedHttpClient httpClient; + private final EnhancedAntiBlockStrategy antiBlockStrategy; + + public DoubanMovieSpider() { + this.antiBlockStrategy = EnhancedAntiBlockStrategy.createForMovie(); + this.httpClient = new EnhancedHttpClient("豆瓣电影", antiBlockStrategy); + this.httpClient.setReferer(REFERER); + this.httpClient.setOrigin(BASE_URL); + } + + private Map getHeaders() { + Map headers = new HashMap<>(); + headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + headers.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + headers.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + return headers; + } + + /** + * 搜索电影 + */ + public CrawlResult> searchMovies(String keyword) { + try { + String encoded = URLEncoder.encode(keyword, StandardCharsets.UTF_8); + String url = SEARCH_URL + "?search_text=" + encoded + "&cat=1002"; + + System.out.println("[豆瓣电影] 正在搜索: " + keyword); + String response = httpClient.get(url, getHeaders()); + + if (response == null || response.isEmpty()) { + System.out.println("[豆瓣电影] 搜索响应为空"); + return CrawlResult.failure("搜索响应为空", Platform.DOUBAN); + } + + List movies = parseSearchResponse(response); + + if (movies.isEmpty()) { + System.out.println("[豆瓣电影] 搜索结果为空"); + return CrawlResult.failure("搜索结果为空", Platform.DOUBAN); + } + + System.out.println("[豆瓣电影] 搜索到 " + movies.size() + " 部电影"); + return CrawlResult.success(movies, Platform.DOUBAN); + + } catch (Exception e) { + System.out.println("[豆瓣电影] 搜索异常: " + e.getMessage()); + return CrawlResult.failure("搜索异常: " + e.getMessage(), Platform.DOUBAN); + } + } + + /** + * 获取热门电影 + */ + public CrawlResult> getHotMovies() { + try { + System.out.println("[豆瓣电影] 正在获取TOP250高分电影榜单..."); + List movies = new ArrayList<>(); + + // 从TOP250页面获取高分电影 + String response = httpClient.get(TOP250_URL, getHeaders()); + + if (response == null || response.isEmpty()) { + System.out.println("[豆瓣电影] TOP250响应为空"); + return CrawlResult.failure("响应为空", Platform.DOUBAN); + } + + movies = parseTop250Response(response); + + if (movies.isEmpty()) { + System.out.println("[豆瓣电影] TOP250解析为空"); + return CrawlResult.failure("解析为空", Platform.DOUBAN); + } + + System.out.println("[豆瓣电影] 获取到 " + movies.size() + " 部高分电影"); + return CrawlResult.success(movies.subList(0, Math.min(movies.size(), 20)), Platform.DOUBAN); + + } catch (Exception e) { + System.out.println("[豆瓣电影] 获取TOP250异常: " + e.getMessage()); + return CrawlResult.failure("异常: " + e.getMessage(), Platform.DOUBAN); + } + } + + /** + * 解析搜索结果 - 从JavaScript变量中提取数据 + */ + private List parseSearchResponse(String response) { + List movies = new ArrayList<>(); + + try { + // 查找 __DATA__ 变量 - 使用更宽松的匹配 + int dataStart = response.indexOf("window.__DATA__ ="); + if (dataStart == -1) { + dataStart = response.indexOf("__DATA__ ="); + } + + if (dataStart != -1) { + int jsonStart = dataStart + (response.startsWith("window.__DATA__", dataStart) ? 17 : 10); + // 找到匹配的闭合大括号 + int braceCount = 0; + int jsonEnd = -1; + + for (int i = jsonStart; i < response.length(); i++) { + char c = response.charAt(i); + if (c == '{') { + braceCount++; + } else if (c == '}') { + braceCount--; + if (braceCount == 0) { + jsonEnd = i + 1; + break; + } + } + } + + if (jsonEnd != -1) { + String jsonData = response.substring(jsonStart, jsonEnd); + + ObjectMapper mapper = new ObjectMapper(); + JsonNode rootNode = mapper.readTree(jsonData); + + JsonNode itemsNode = rootNode.get("items"); + if (itemsNode != null && itemsNode.isArray()) { + for (JsonNode itemNode : itemsNode) { + try { + String title = itemNode.has("title") ? itemNode.get("title").asText("") : ""; + String url = itemNode.has("url") ? itemNode.get("url").asText("") : ""; + String rating = "0"; + String year = ""; + String genre = ""; + String director = ""; + + // 提取评分 + JsonNode ratingNode = itemNode.get("rating"); + if (ratingNode != null && ratingNode.has("value")) { + rating = String.valueOf(ratingNode.get("value").asDouble()); + } + + // 从标题中提取年份 + year = extractYear(title); + + // 从简介中提取类型和导演 + String abstractText = itemNode.has("abstract") ? itemNode.get("abstract").asText("") : ""; + String abstract2Text = itemNode.has("abstract_2") ? itemNode.get("abstract_2").asText("") : ""; + genre = extractGenre(abstractText); + + // 提取导演信息 + if (!abstract2Text.isEmpty()) { + director = abstract2Text.split("/")[0].trim(); + if (director.length() > 10) { + director = director.substring(0, 10) + "..."; + } + } + + if (!title.isEmpty()) { + String movieId = extractMovieId(url); + + MovieItem movie = new MovieItem(movieId, title, rating, year, genre, director); + movies.add(movie); + + if (movies.size() >= 10) break; + } + } catch (Exception e) { + // 跳过解析失败的单条 + } + } + } else { + System.out.println("[豆瓣电影] items字段为空或不是数组"); + } + } else { + System.out.println("[豆瓣电影] 未找到JSON结束位置"); + } + } else { + System.out.println("[豆瓣电影] 未找到 __DATA__ 变量"); + } + + } catch (Exception e) { + System.out.println("[豆瓣电影] 解析搜索结果异常: " + e.getMessage()); + } + + return movies; + } + + /** + * 解析豆瓣TOP250页面 - 获取评分最高的电影 + */ + private List parseTop250Response(String response) { + List movies = new ArrayList<>(); + + try { + Document doc = Jsoup.parse(response); + Elements items = doc.select("ol.grid_view li"); + + for (Element item : items) { + try { + // 提取标题 + Element titleElem = item.selectFirst(".title"); + String title = titleElem != null ? titleElem.text().trim() : ""; + + // 提取评分 + Element ratingElem = item.selectFirst(".rating_num"); + String rating = ratingElem != null ? ratingElem.text().trim() : "0"; + + // 提取年份和类型 + Element infoElem = item.selectFirst(".bd p"); + String year = ""; + String genre = ""; + String director = ""; + + if (infoElem != null) { + String infoText = infoElem.text().trim(); + // 提取年份 + year = extractYear(infoText); + // 提取类型 + genre = extractGenre(infoText); + // 提取导演 + if (infoText.contains("导演:")) { + int start = infoText.indexOf("导演:") + 3; + int end = infoText.indexOf("主演:"); + if (end > start) { + director = infoText.substring(start, end).trim(); + } else { + end = infoText.indexOf("..."); + if (end > start) { + director = infoText.substring(start, end).trim(); + } + } + if (director.length() > 10) { + director = director.substring(0, 10) + "..."; + } + } + } + + // 提取链接获取ID + Element linkElem = item.selectFirst("a[href*='/subject/']"); + String href = linkElem != null ? linkElem.attr("href") : ""; + String movieId = extractMovieId(href); + + if (!title.isEmpty()) { + MovieItem movie = new MovieItem(movieId, title, rating, year, genre, director); + movies.add(movie); + + if (movies.size() >= 20) break; + } + } catch (Exception e) { + // 跳过解析失败的单条 + } + } + } catch (Exception e) { + System.out.println("[豆瓣电影] 解析TOP250异常: " + e.getMessage()); + } + + return movies; + } + + private String extractMovieId(String href) { + if (href == null) return ""; + Pattern pattern = Pattern.compile("/subject/(\\d+)"); + Matcher matcher = pattern.matcher(href); + if (matcher.find()) { + return matcher.group(1); + } + return ""; + } + + private String extractYear(String text) { + if (text == null) return ""; + Pattern pattern = Pattern.compile("(\\d{4})"); + Matcher matcher = pattern.matcher(text); + if (matcher.find()) { + return matcher.group(1); + } + return ""; + } + + private String extractGenre(String text) { + if (text == null) return ""; + String[] genres = {"剧情", "喜剧", "动作", "爱情", "科幻", "悬疑", "惊悚", "恐怖", "动画", "纪录片", "战争", "犯罪", "冒险", "奇幻", "历史"}; + for (String genre : genres) { + if (text.contains(genre)) { + return genre; + } + } + return ""; + } + + @Override + public String buildSearchUrl(String keyword) { + try { + String encoded = URLEncoder.encode(keyword, StandardCharsets.UTF_8); + return SEARCH_URL + "?search_text=" + encoded + "&cat=1002"; + } catch (Exception e) { + return SEARCH_URL; + } + } + + @Override + public String buildDetailUrl(String itemId) { + return BASE_URL + "/subject/" + itemId + "/"; + } + + @Override + public CrawlResult> executeCrawl(String keyword) { + CrawlResult> result; + if (keyword == null || keyword.isEmpty()) { + result = getHotMovies(); + } else { + result = searchMovies(keyword); + } + if (result.isSuccess() && result.getData() != null) { + return CrawlResult.success(new ArrayList<>(result.getData()), Platform.DOUBAN); + } else { + return CrawlResult.failure(result != null ? result.getMessage() : "未知错误", Platform.DOUBAN); + } + } + + @Override + public String getPlatformName() { + return "豆瓣电影"; + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/spider/news/ChinanewsSpider.java b/project/src/main/java/com/example/spider/news/ChinanewsSpider.java new file mode 100644 index 0000000..728d5ec --- /dev/null +++ b/project/src/main/java/com/example/spider/news/ChinanewsSpider.java @@ -0,0 +1,172 @@ +package com.example.spider.news; + +import com.example.core.CrawlResult; +import com.example.core.Platform; +import com.example.model.NewsItem; +import com.example.service.impl.EnhancedHttpClient; +import com.example.strategy.EnhancedAntiBlockStrategy; +import com.example.strategy.SpiderStrategy; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 中国新闻网RSS爬虫 + * 使用官方RSS源获取新闻数据,零反爬限制 + */ +public class ChinanewsSpider implements SpiderStrategy { + + private static final String BASE_URL = "https://www.chinanews.com.cn"; + private static final String RSS_URL = "https://www.chinanews.com.cn/rss/scroll-news.xml"; + private static final String REFERER = "https://www.chinanews.com.cn/"; + + private final EnhancedHttpClient httpClient; + private final EnhancedAntiBlockStrategy antiBlockStrategy; + + public ChinanewsSpider() { + this.antiBlockStrategy = EnhancedAntiBlockStrategy.createForNews(); + this.httpClient = new EnhancedHttpClient("中国新闻网", antiBlockStrategy); + this.httpClient.setReferer(REFERER); + } + + private Map getHeaders() { + Map headers = new HashMap<>(); + headers.put("User-Agent", antiBlockStrategy.getRandomUserAgent()); + headers.put("Accept", "application/rss+xml, application/xml, text/xml, */*"); + headers.put("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + return headers; + } + + /** + * 获取滚动新闻 + */ + public CrawlResult> getScrollNews() { + try { + System.out.println("[中国新闻网] 正在获取RSS新闻..."); + String response = httpClient.get(RSS_URL, getHeaders()); + + if (response == null || response.isEmpty()) { + System.out.println("[中国新闻网] RSS响应为空"); + return CrawlResult.failure("RSS响应为空", Platform.CHINANEWS); + } + + List newsList = parseRSS(response); + + if (newsList.isEmpty()) { + System.out.println("[中国新闻网] RSS解析结果为空"); + return CrawlResult.failure("RSS解析结果为空", Platform.CHINANEWS); + } + + System.out.println("[中国新闻网] 成功获取 " + newsList.size() + " 条新闻"); + return CrawlResult.success(newsList, Platform.CHINANEWS); + + } catch (Exception e) { + System.out.println("[中国新闻网] 获取新闻异常: " + e.getMessage()); + return CrawlResult.failure("获取新闻异常: " + e.getMessage(), Platform.CHINANEWS); + } + } + + /** + * 搜索新闻(RSS不支持搜索,返回滚动新闻) + */ + public CrawlResult> searchNews(String keyword) { + System.out.println("[中国新闻网] RSS不支持搜索,返回滚动新闻"); + return getScrollNews(); + } + + /** + * 解析RSS XML + */ + private List parseRSS(String xmlContent) { + List newsList = new ArrayList<>(); + + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(new ByteArrayInputStream(xmlContent.getBytes(StandardCharsets.UTF_8))); + + NodeList items = document.getElementsByTagName("item"); + + for (int i = 0; i < items.getLength() && i < 20; i++) { + Element item = (Element) items.item(i); + + String title = getElementText(item, "title"); + String link = getElementText(item, "link"); + String pubDate = getElementText(item, "pubDate"); + String description = getElementText(item, "description"); + + if (title != null && !title.isEmpty()) { + String formattedDate = formatDate(pubDate); + NewsItem news = new NewsItem(title, link, formattedDate, description); + newsList.add(news); + } + } + + } catch (Exception e) { + System.out.println("[中国新闻网] RSS解析异常: " + e.getMessage()); + } + + return newsList; + } + + private String getElementText(Element parent, String tagName) { + NodeList nodes = parent.getElementsByTagName(tagName); + if (nodes.getLength() > 0) { + return nodes.item(0).getTextContent().trim(); + } + return ""; + } + + private String formatDate(String pubDate) { + if (pubDate == null || pubDate.isEmpty()) { + return ""; + } + try { + if (pubDate.contains("+")) { + pubDate = pubDate.substring(0, pubDate.indexOf("+")).trim(); + } + return pubDate.replace("T", " ").substring(0, Math.min(19, pubDate.length())); + } catch (Exception e) { + return pubDate; + } + } + + @Override + public String buildSearchUrl(String keyword) { + return RSS_URL; + } + + @Override + public String buildDetailUrl(String itemId) { + return BASE_URL + "/news/" + itemId + ".shtml"; + } + + @Override + public CrawlResult> executeCrawl(String keyword) { + CrawlResult> result; + if (keyword == null || keyword.isEmpty()) { + result = getScrollNews(); + } else { + result = searchNews(keyword); + } + if (result.isSuccess() && result.getData() != null) { + return CrawlResult.success(new ArrayList<>(result.getData()), Platform.CHINANEWS); + } else { + return CrawlResult.failure(result != null ? result.getMessage() : "未知错误", Platform.CHINANEWS); + } + } + + @Override + public String getPlatformName() { + return "中国新闻网"; + } +} diff --git a/project/src/main/java/com/example/storage/DataExporter.java b/project/src/main/java/com/example/storage/DataExporter.java new file mode 100644 index 0000000..8640ca7 --- /dev/null +++ b/project/src/main/java/com/example/storage/DataExporter.java @@ -0,0 +1,90 @@ +package com.example.storage; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +public class DataExporter { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + static { + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + } + + public static void exportToCsv(List data, String filePath) throws IOException { + if (data == null || data.isEmpty()) { + throw new IllegalArgumentException("数据不能为空"); + } + + try (BufferedWriter writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(filePath), StandardCharsets.UTF_8))) { + + writer.write('\uFEFF'); + + writer.write(generateCsvHeader(data.get(0))); + writer.newLine(); + + for (Object item : data) { + writer.write(generateCsvRow(item)); + writer.newLine(); + } + } + } + + public static void exportToJson(List data, String filePath) throws IOException { + if (data == null || data.isEmpty()) { + throw new IllegalArgumentException("数据不能为空"); + } + + objectMapper.writeValue(new File(filePath), data); + } + + public static List importFromJson(String filePath, Class clazz) throws IOException { + return objectMapper.readValue(new File(filePath), + objectMapper.getTypeFactory().constructCollectionType(List.class, clazz)); + } + + private static String generateCsvHeader(Object item) { + List headers = new ArrayList<>(); + for (java.lang.reflect.Field field : item.getClass().getDeclaredFields()) { + field.setAccessible(true); + headers.add(field.getName()); + } + return String.join(",", headers); + } + + private static String generateCsvRow(Object item) { + List values = new ArrayList<>(); + for (java.lang.reflect.Field field : item.getClass().getDeclaredFields()) { + field.setAccessible(true); + try { + Object value = field.get(item); + values.add(escapeCsvValue(value != null ? value.toString() : "")); + } catch (IllegalAccessException e) { + values.add(""); + } + } + return String.join(",", values); + } + + private static String escapeCsvValue(String value) { + if (value.contains(",") || value.contains("\"") || value.contains("\n")) { + return "\"" + value.replace("\"", "\"\"") + "\""; + } + return value; + } + + public static String getDefaultExportPath(String prefix) { + String timestamp = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss").format(new java.util.Date()); + return "data/" + prefix + "_" + timestamp + ".csv"; + } +} diff --git a/project/src/main/java/com/example/storage/DatabaseManager.java b/project/src/main/java/com/example/storage/DatabaseManager.java new file mode 100644 index 0000000..562fa56 --- /dev/null +++ b/project/src/main/java/com/example/storage/DatabaseManager.java @@ -0,0 +1,433 @@ +package com.example.storage; + +import com.example.model.BookItem; +import com.example.model.MovieItem; +import com.example.model.NewsItem; +import com.example.model.Song; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +/** + * SQLite数据库管理器 + * 提供数据的持久化存储和查询功能 + */ +public class DatabaseManager { + + private static final String DB_NAME = "spider_data.db"; + private static final String DB_PATH = "data/" + DB_NAME; + private Connection connection; + + /** + * 初始化数据库连接 + */ + public void connect() throws SQLException { + // 确保数据目录存在 + new java.io.File("data").mkdirs(); + + String url = "jdbc:sqlite:" + DB_PATH; + connection = DriverManager.getConnection(url); + System.out.println("数据库连接成功: " + DB_PATH); + + // 初始化表结构 + initTables(); + } + + /** + * 关闭数据库连接 + */ + public void disconnect() { + if (connection != null) { + try { + connection.close(); + System.out.println("数据库连接已关闭"); + } catch (SQLException e) { + System.err.println("关闭连接失败: " + e.getMessage()); + } + } + } + + /** + * 初始化数据库表 + */ + private void initTables() throws SQLException { + // 创建电影表 + executeUpdate("CREATE TABLE IF NOT EXISTS movies (" + + "id TEXT PRIMARY KEY," + + "title TEXT NOT NULL," + + "rating TEXT," + + "release_date TEXT," + + "genre TEXT," + + "director TEXT," + + "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); + + // 创建图书表 + executeUpdate("CREATE TABLE IF NOT EXISTS books (" + + "id INTEGER PRIMARY KEY AUTOINCREMENT," + + "title TEXT NOT NULL," + + "author TEXT," + + "publisher TEXT," + + "rating TEXT," + + "price TEXT," + + "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); + + // 创建音乐表 + executeUpdate("CREATE TABLE IF NOT EXISTS songs (" + + "id TEXT PRIMARY KEY," + + "name TEXT NOT NULL," + + "artists TEXT," + + "album TEXT," + + "duration TEXT," + + "platform TEXT," + + "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); + + // 创建新闻表 + executeUpdate("CREATE TABLE IF NOT EXISTS news (" + + "id INTEGER PRIMARY KEY AUTOINCREMENT," + + "title TEXT NOT NULL," + + "summary TEXT," + + "url TEXT," + + "publish_time TEXT," + + "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); + + System.out.println("数据库表初始化完成"); + } + + /** + * 执行更新操作 + */ + private void executeUpdate(String sql) throws SQLException { + try (Statement stmt = connection.createStatement()) { + stmt.executeUpdate(sql); + } + } + + /** + * 插入电影数据 + */ + public void insertMovie(MovieItem movie) throws SQLException { + String sql = "INSERT OR REPLACE INTO movies (id, title, rating, release_date, genre, director) " + + "VALUES (?, ?, ?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + pstmt.setString(1, movie.getId() != null ? movie.getId() : ""); + pstmt.setString(2, movie.getTitle()); + pstmt.setString(3, movie.getRating()); + pstmt.setString(4, movie.getReleaseDate()); + pstmt.setString(5, movie.getGenre()); + pstmt.setString(6, movie.getDirector()); + pstmt.executeUpdate(); + } + } + + /** + * 批量插入电影数据 + */ + public void insertMovies(List movies) throws SQLException { + connection.setAutoCommit(false); + try { + String sql = "INSERT OR REPLACE INTO movies (id, title, rating, release_date, genre, director) " + + "VALUES (?, ?, ?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + for (MovieItem movie : movies) { + pstmt.setString(1, movie.getId() != null ? movie.getId() : ""); + pstmt.setString(2, movie.getTitle()); + pstmt.setString(3, movie.getRating()); + pstmt.setString(4, movie.getReleaseDate()); + pstmt.setString(5, movie.getGenre()); + pstmt.setString(6, movie.getDirector()); + pstmt.addBatch(); + } + pstmt.executeBatch(); + } + connection.commit(); + System.out.println("成功插入 " + movies.size() + " 条电影数据"); + } catch (SQLException e) { + connection.rollback(); + throw e; + } finally { + connection.setAutoCommit(true); + } + } + + /** + * 查询所有电影 + */ + public List getAllMovies() throws SQLException { + List movies = new ArrayList<>(); + String sql = "SELECT id, title, rating, release_date, genre, director FROM movies"; + + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + while (rs.next()) { + MovieItem movie = new MovieItem( + rs.getString("id"), + rs.getString("title"), + rs.getString("rating"), + rs.getString("release_date"), + rs.getString("genre"), + rs.getString("director") + ); + movies.add(movie); + } + } + return movies; + } + + /** + * 插入图书数据 + */ + public void insertBook(BookItem book) throws SQLException { + String sql = "INSERT INTO books (title, author, publisher, rating, price) " + + "VALUES (?, ?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + pstmt.setString(1, book.getTitle()); + pstmt.setString(2, book.getAuthor()); + pstmt.setString(3, book.getPublisher()); + pstmt.setString(4, book.getRating()); + pstmt.setString(5, book.getPrice()); + pstmt.executeUpdate(); + } + } + + /** + * 批量插入图书数据 + */ + public void insertBooks(List books) throws SQLException { + connection.setAutoCommit(false); + try { + String sql = "INSERT INTO books (title, author, publisher, rating, price) " + + "VALUES (?, ?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + for (BookItem book : books) { + pstmt.setString(1, book.getTitle()); + pstmt.setString(2, book.getAuthor()); + pstmt.setString(3, book.getPublisher()); + pstmt.setString(4, book.getRating()); + pstmt.setString(5, book.getPrice()); + pstmt.addBatch(); + } + pstmt.executeBatch(); + } + connection.commit(); + System.out.println("成功插入 " + books.size() + " 条图书数据"); + } catch (SQLException e) { + connection.rollback(); + throw e; + } finally { + connection.setAutoCommit(true); + } + } + + /** + * 查询所有图书 + */ + public List getAllBooks() throws SQLException { + List books = new ArrayList<>(); + String sql = "SELECT title, author, publisher, rating, price FROM books"; + + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + while (rs.next()) { + BookItem book = new BookItem( + rs.getString("title"), + rs.getString("author"), + rs.getString("publisher"), + rs.getString("rating"), + rs.getString("price") + ); + books.add(book); + } + } + return books; + } + + /** + * 插入歌曲数据 + */ + public void insertSong(Song song) throws SQLException { + String sql = "INSERT OR REPLACE INTO songs (id, name, artists, album, duration, platform) " + + "VALUES (?, ?, ?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + pstmt.setString(1, String.valueOf(song.getSongId())); + pstmt.setString(2, song.getName()); + pstmt.setString(3, String.join(",", song.getArtists())); + pstmt.setString(4, song.getAlbum()); + pstmt.setString(5, song.getDuration()); + pstmt.setString(6, song.getPlatform()); + pstmt.executeUpdate(); + } + } + + /** + * 批量插入歌曲数据 + */ + public void insertSongs(List songs) throws SQLException { + connection.setAutoCommit(false); + try { + String sql = "INSERT OR REPLACE INTO songs (id, name, artists, album, duration, platform) " + + "VALUES (?, ?, ?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + for (Song song : songs) { + pstmt.setString(1, String.valueOf(song.getSongId())); + pstmt.setString(2, song.getName()); + pstmt.setString(3, String.join(",", song.getArtists())); + pstmt.setString(4, song.getAlbum()); + pstmt.setString(5, song.getDuration()); + pstmt.setString(6, song.getPlatform()); + pstmt.addBatch(); + } + pstmt.executeBatch(); + } + connection.commit(); + System.out.println("成功插入 " + songs.size() + " 条歌曲数据"); + } catch (SQLException e) { + connection.rollback(); + throw e; + } finally { + connection.setAutoCommit(true); + } + } + + /** + * 查询所有歌曲 + */ + public List getAllSongs() throws SQLException { + List songs = new ArrayList<>(); + String sql = "SELECT id, name, artists, album, duration, platform FROM songs"; + + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + while (rs.next()) { + List artists = new ArrayList<>(); + String artistStr = rs.getString("artists"); + if (artistStr != null && !artistStr.isEmpty()) { + for (String artist : artistStr.split(",")) { + artists.add(artist.trim()); + } + } + + long songId = 0; + try { + songId = Long.parseLong(rs.getString("id")); + } catch (NumberFormatException e) { + songId = 0; + } + + Song song = new Song( + songId, + rs.getString("name"), + artists, + rs.getString("album"), + rs.getString("duration"), + rs.getString("platform") + ); + songs.add(song); + } + } + return songs; + } + + /** + * 插入新闻数据 + */ + public void insertNews(NewsItem news) throws SQLException { + String sql = "INSERT INTO news (title, summary, url, publish_time) " + + "VALUES (?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + pstmt.setString(1, news.getTitle()); + pstmt.setString(2, news.getSummary()); + pstmt.setString(3, news.getUrl()); + pstmt.setString(4, news.getPublishTime()); + pstmt.executeUpdate(); + } + } + + /** + * 批量插入新闻数据 + */ + public void insertNewsList(List newsList) throws SQLException { + connection.setAutoCommit(false); + try { + String sql = "INSERT INTO news (title, summary, url, publish_time) " + + "VALUES (?, ?, ?, ?)"; + try (PreparedStatement pstmt = connection.prepareStatement(sql)) { + for (NewsItem news : newsList) { + pstmt.setString(1, news.getTitle()); + pstmt.setString(2, news.getSummary()); + pstmt.setString(3, news.getUrl()); + pstmt.setString(4, news.getPublishTime()); + pstmt.addBatch(); + } + pstmt.executeBatch(); + } + connection.commit(); + System.out.println("成功插入 " + newsList.size() + " 条新闻数据"); + } catch (SQLException e) { + connection.rollback(); + throw e; + } finally { + connection.setAutoCommit(true); + } + } + + /** + * 查询所有新闻 + */ + public List getAllNews() throws SQLException { + List newsList = new ArrayList<>(); + String sql = "SELECT title, summary, url, publish_time FROM news"; + + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + while (rs.next()) { + NewsItem news = new NewsItem( + rs.getString("title"), + rs.getString("summary"), + rs.getString("url"), + rs.getString("publish_time") + ); + newsList.add(news); + } + } + return newsList; + } + + /** + * 获取表记录数 + */ + public int getRecordCount(String tableName) throws SQLException { + String sql = "SELECT COUNT(*) AS count FROM " + tableName; + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(sql)) { + + if (rs.next()) { + return rs.getInt("count"); + } + } + return 0; + } + + /** + * 清空表数据 + */ + public void clearTable(String tableName) throws SQLException { + executeUpdate("DELETE FROM " + tableName); + System.out.println("已清空表: " + tableName); + } + + /** + * 检查数据库连接状态 + */ + public boolean isConnected() { + try { + return connection != null && !connection.isClosed(); + } catch (SQLException e) { + return false; + } + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/storage/JsonExporter.java b/project/src/main/java/com/example/storage/JsonExporter.java new file mode 100644 index 0000000..a7063ba --- /dev/null +++ b/project/src/main/java/com/example/storage/JsonExporter.java @@ -0,0 +1,47 @@ +package com.example.storage; + +import com.example.model.Article; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; + +public class JsonExporter { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final String DEFAULT_PATH = "./data/articles.json"; + + static { + objectMapper.registerModule(new JavaTimeModule()); + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + } + + private JsonExporter() {} + + public static void export(List
articles) throws IOException { + export(articles, DEFAULT_PATH); + } + + public static void export(List
articles, String path) throws IOException { + if (articles == null || articles.isEmpty()) { + throw new IllegalArgumentException("数据列表不能为空"); + } + + File file = new File(path); + File parentDir = file.getParentFile(); + if (parentDir != null && !parentDir.exists()) { + parentDir.mkdirs(); + } + + try (FileOutputStream fos = new FileOutputStream(file)) { + objectMapper.writeValue(fos, articles); + } + + System.out.println("[INFO] 数据已导出到: " + file.getAbsolutePath()); + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/storage/JsonImporter.java b/project/src/main/java/com/example/storage/JsonImporter.java new file mode 100644 index 0000000..3dbb8b7 --- /dev/null +++ b/project/src/main/java/com/example/storage/JsonImporter.java @@ -0,0 +1,44 @@ +package com.example.storage; + +import com.example.model.Article; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class JsonImporter { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final String DEFAULT_PATH = "./data/articles.json"; + + static { + objectMapper.registerModule(new JavaTimeModule()); + objectMapper.disable(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + } + + private JsonImporter() {} + + public static List
importData() throws IOException { + return importData(DEFAULT_PATH); + } + + public static List
importData(String path) throws IOException { + File file = new File(path); + + if (!file.exists()) { + System.out.println("[WARN] 文件不存在: " + path); + return new ArrayList<>(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + List
result = objectMapper.readValue(fis, new TypeReference>() {}); + System.out.println("[INFO] 导入 " + result.size() + " 条数据"); + return result; + } + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/strategy/AntiBlockStrategy.java b/project/src/main/java/com/example/strategy/AntiBlockStrategy.java new file mode 100644 index 0000000..253ddc4 --- /dev/null +++ b/project/src/main/java/com/example/strategy/AntiBlockStrategy.java @@ -0,0 +1,20 @@ +package com.example.strategy; + +public interface AntiBlockStrategy { + + String getRandomUserAgent(); + + String getRandomProxy(); + + void beforeRequest(String url); + + void afterRequest(String url, boolean success); + + long getRandomDelay(); + + long getMinRequestInterval(); + + int getMaxRetries(); + + boolean shouldRetry(int retryCount, int statusCode); +} \ No newline at end of file diff --git a/project/src/main/java/com/example/strategy/DefaultAntiBlockStrategy.java b/project/src/main/java/com/example/strategy/DefaultAntiBlockStrategy.java new file mode 100644 index 0000000..b30c1f2 --- /dev/null +++ b/project/src/main/java/com/example/strategy/DefaultAntiBlockStrategy.java @@ -0,0 +1,114 @@ +package com.example.strategy; + +import java.net.URI; +import java.util.Random; + +public class DefaultAntiBlockStrategy implements AntiBlockStrategy { + + private final Random random = new Random(); + private final RequestThrottler throttler; + private final int maxRetries; + private final long minDelayMs; + private final long maxDelayMs; + + public DefaultAntiBlockStrategy() { + this(3, 1000, 3000); + } + + public DefaultAntiBlockStrategy(int maxRetries, long minDelayMs, long maxDelayMs) { + this.maxRetries = maxRetries; + this.minDelayMs = minDelayMs; + this.maxDelayMs = maxDelayMs; + this.throttler = RequestThrottler.createDefault(); + } + + public static DefaultAntiBlockStrategy createDefault() { + return new DefaultAntiBlockStrategy(); + } + + public static DefaultAntiBlockStrategy createStrict() { + return new DefaultAntiBlockStrategy(2, 2000, 5000); + } + + public static DefaultAntiBlockStrategy createRelaxed() { + return new DefaultAntiBlockStrategy(5, 500, 1500); + } + + @Override + public String getRandomUserAgent() { + return UserAgentPool.getRandomDesktop(); + } + + @Override + public String getRandomProxy() { + return null; + } + + @Override + public void beforeRequest(String url) { + try { + String domain = extractDomain(url); + throttler.acquire(domain); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + @Override + public void afterRequest(String url, boolean success) { + if (!success) { + System.out.println("[防封策略] 请求失败: " + url); + } + } + + @Override + public long getRandomDelay() { + return minDelayMs + random.nextLong(maxDelayMs - minDelayMs); + } + + @Override + public long getMinRequestInterval() { + return minDelayMs; + } + + @Override + public int getMaxRetries() { + return maxRetries; + } + + @Override + public boolean shouldRetry(int retryCount, int statusCode) { + if (retryCount >= maxRetries) { + return false; + } + return statusCode == 429 || statusCode == 503 || statusCode == 502 || statusCode >= 500; + } + + private String extractDomain(String url) { + try { + URI uri = new URI(url); + return uri.getHost(); + } catch (Exception e) { + return "unknown"; + } + } + + public void delay() { + try { + long delay = getRandomDelay(); + Thread.sleep(delay); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + public void exponentialBackoff(int retryCount) { + try { + long baseDelay = 1000L << retryCount; + long jitter = random.nextLong(500); + Thread.sleep(baseDelay + jitter); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/strategy/EnhancedAntiBlockStrategy.java b/project/src/main/java/com/example/strategy/EnhancedAntiBlockStrategy.java new file mode 100644 index 0000000..8251e94 --- /dev/null +++ b/project/src/main/java/com/example/strategy/EnhancedAntiBlockStrategy.java @@ -0,0 +1,194 @@ +package com.example.strategy; + +import java.net.URI; +import java.util.Random; + +/** + * 增强版反爬策略 + * 包含完整的浏览器指纹、智能请求间隔、自动重试机制 + */ +public class EnhancedAntiBlockStrategy implements AntiBlockStrategy { + + private final Random random = new Random(); + private final RequestThrottler throttler; + private final int maxRetries; + private final long minDelayMs; + private final long maxDelayMs; + private final String[] acceptHeaders; + private final String[] acceptEncodingHeaders; + private final String[] acceptLanguageHeaders; + private final String[] secChUaHeaders; + private final String[] secChUaMobileHeaders; + private final String[] secChUaPlatformHeaders; + + public EnhancedAntiBlockStrategy() { + this(3, 2000, 5000); + } + + public EnhancedAntiBlockStrategy(int maxRetries, long minDelayMs, long maxDelayMs) { + this.maxRetries = maxRetries; + this.minDelayMs = minDelayMs; + this.maxDelayMs = maxDelayMs; + this.throttler = RequestThrottler.createStrict(); + + // 初始化各种请求头池 + this.acceptHeaders = new String[] { + "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", + "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "application/json, text/plain, */*" + }; + + this.acceptEncodingHeaders = new String[] { + "gzip, deflate, br", + "gzip, deflate", + "deflate" + }; + + this.acceptLanguageHeaders = new String[] { + "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", + "zh-CN,zh;q=0.9,en;q=0.8", + "zh-CN,zh;q=0.9" + }; + + this.secChUaHeaders = new String[] { + "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"", + "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"119\", \"Google Chrome\";v=\"119\"", + "\"Microsoft Edge\";v=\"120\", \"Chromium\";v=\"120\", \"Not.A/Brand\";v=\"24\"" + }; + + this.secChUaMobileHeaders = new String[] { + "?0", + "?1" + }; + + this.secChUaPlatformHeaders = new String[] { + "\"Windows\"", + "\"macOS\"", + "\"Linux\"" + }; + } + + public static EnhancedAntiBlockStrategy createDefault() { + return new EnhancedAntiBlockStrategy(); + } + + public static EnhancedAntiBlockStrategy createStrict() { + return new EnhancedAntiBlockStrategy(5, 3000, 8000); + } + + public static EnhancedAntiBlockStrategy createForMusic() { + return new EnhancedAntiBlockStrategy(3, 2000, 4000); + } + + public static EnhancedAntiBlockStrategy createForNews() { + return new EnhancedAntiBlockStrategy(3, 1500, 3000); + } + + public static EnhancedAntiBlockStrategy createForBook() { + return new EnhancedAntiBlockStrategy(4, 2500, 5000); + } + + public static EnhancedAntiBlockStrategy createForMovie() { + return new EnhancedAntiBlockStrategy(3, 2000, 4000); + } + + @Override + public String getRandomUserAgent() { + return UserAgentPool.getRandomDesktop(); + } + + public String getRandomAccept() { + return acceptHeaders[random.nextInt(acceptHeaders.length)]; + } + + public String getRandomAcceptEncoding() { + return acceptEncodingHeaders[random.nextInt(acceptEncodingHeaders.length)]; + } + + public String getRandomAcceptLanguage() { + return acceptLanguageHeaders[random.nextInt(acceptLanguageHeaders.length)]; + } + + public String getRandomSecChUa() { + return secChUaHeaders[random.nextInt(secChUaHeaders.length)]; + } + + public String getRandomSecChUaMobile() { + return secChUaMobileHeaders[random.nextInt(secChUaMobileHeaders.length)]; + } + + public String getRandomSecChUaPlatform() { + return secChUaPlatformHeaders[random.nextInt(secChUaPlatformHeaders.length)]; + } + + @Override + public String getRandomProxy() { + return null; + } + + @Override + public void beforeRequest(String url) { + try { + String domain = extractDomain(url); + throttler.acquire(domain); + Thread.sleep(getRandomDelay()); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + @Override + public void afterRequest(String url, boolean success) { + if (!success) { + System.out.println("[防封策略] 请求失败: " + url); + try { + Thread.sleep(5000 + random.nextLong(5000)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + } + + @Override + public long getRandomDelay() { + return minDelayMs + random.nextLong(maxDelayMs - minDelayMs); + } + + @Override + public long getMinRequestInterval() { + return minDelayMs; + } + + @Override + public int getMaxRetries() { + return maxRetries; + } + + @Override + public boolean shouldRetry(int retryCount, int statusCode) { + if (retryCount >= maxRetries) { + return false; + } + return statusCode == 429 || statusCode == 503 || statusCode == 502 || + statusCode >= 500 || statusCode == 403; + } + + public void exponentialBackoff(int retryCount) { + try { + long delay = (long) Math.pow(2, retryCount) * 1000 + random.nextLong(1000); + System.out.println("[防封策略] 指数退避等待: " + delay + "ms"); + Thread.sleep(delay); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + + private String extractDomain(String url) { + try { + URI uri = new URI(url); + return uri.getHost(); + } catch (Exception e) { + return "unknown"; + } + } +} \ No newline at end of file diff --git a/project/src/main/java/com/example/strategy/RequestThrottler.java b/project/src/main/java/com/example/strategy/RequestThrottler.java new file mode 100644 index 0000000..acd7429 --- /dev/null +++ b/project/src/main/java/com/example/strategy/RequestThrottler.java @@ -0,0 +1,99 @@ +package com.example.strategy; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +public final class RequestThrottler { + + private final Map domainRecords = new ConcurrentHashMap<>(); + private final int maxRequestsPerMinute; + private final long minIntervalMs; + private final Object lock = new Object(); + + public RequestThrottler(int maxRequestsPerMinute, long minIntervalMs) { + this.maxRequestsPerMinute = maxRequestsPerMinute; + this.minIntervalMs = minIntervalMs; + } + + public static RequestThrottler createDefault() { + return new RequestThrottler(30, 1000); + } + + public static RequestThrottler createStrict() { + return new RequestThrottler(10, 2000); + } + + public static RequestThrottler createRelaxed() { + return new RequestThrottler(60, 500); + } + + public void acquire(String domain) throws InterruptedException { + synchronized (lock) { + RequestRecord record = domainRecords.computeIfAbsent(domain, k -> new RequestRecord()); + + long now = System.currentTimeMillis(); + long elapsed = now - record.lastRequestTime; + + if (elapsed < minIntervalMs) { + Thread.sleep(minIntervalMs - elapsed); + } + + if (record.requestCount.get() >= maxRequestsPerMinute && + (now - record.windowStartTime) < 60000) { + long waitTime = 60000 - (now - record.windowStartTime); + Thread.sleep(waitTime); + record.requestCount.set(0); + record.windowStartTime = System.currentTimeMillis(); + } + + record.requestCount.incrementAndGet(); + record.lastRequestTime = System.currentTimeMillis(); + } + } + + public boolean tryAcquire(String domain) { + synchronized (lock) { + RequestRecord record = domainRecords.computeIfAbsent(domain, k -> new RequestRecord()); + + long now = System.currentTimeMillis(); + long elapsed = now - record.lastRequestTime; + + if (elapsed < minIntervalMs) { + return false; + } + + if (record.requestCount.get() >= maxRequestsPerMinute && + (now - record.windowStartTime) < 60000) { + return false; + } + + record.requestCount.incrementAndGet(); + record.lastRequestTime = now; + return true; + } + } + + public int getRequestCount(String domain) { + RequestRecord record = domainRecords.get(domain); + return record != null ? record.requestCount.get() : 0; + } + + public int getMaxRequestsPerMinute() { + return maxRequestsPerMinute; + } + + public void reset(String domain) { + domainRecords.remove(domain); + } + + public void resetAll() { + domainRecords.clear(); + } + + private static class RequestRecord { + final AtomicInteger requestCount = new AtomicInteger(0); + volatile long lastRequestTime = 0; + volatile long windowStartTime = System.currentTimeMillis(); + } +} diff --git a/project/src/main/java/com/example/strategy/SpiderStrategy.java b/project/src/main/java/com/example/strategy/SpiderStrategy.java new file mode 100644 index 0000000..99819c3 --- /dev/null +++ b/project/src/main/java/com/example/strategy/SpiderStrategy.java @@ -0,0 +1,16 @@ +package com.example.strategy; + +import com.example.core.CrawlResult; + +import java.util.List; + +public interface SpiderStrategy { + + String buildSearchUrl(String keyword); + + String buildDetailUrl(String itemId); + + CrawlResult> executeCrawl(String keyword); + + String getPlatformName(); +} \ No newline at end of file diff --git a/project/src/main/java/com/example/strategy/UserAgentPool.java b/project/src/main/java/com/example/strategy/UserAgentPool.java new file mode 100644 index 0000000..40bebb9 --- /dev/null +++ b/project/src/main/java/com/example/strategy/UserAgentPool.java @@ -0,0 +1,86 @@ +package com.example.strategy; + +import java.util.Random; + +public final class UserAgentPool { + + private UserAgentPool() { + } + + private static final String[] CHROME_AGENTS = { + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", + "Mozilla/5.0 (Windows NT 11.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36", + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" + }; + + private static final String[] FIREFOX_AGENTS = { + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0", + "Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0" + }; + + private static final String[] EDGE_AGENTS = { + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" + }; + + private static final String[] SAFARI_AGENTS = { + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15", + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15" + }; + + private static final String[] MOBILE_AGENTS = { + "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1", + "Mozilla/5.0 (Linux; Android 14; SM-S918B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36", + "Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36" + }; + + private static final Random random = new Random(); + + public static String getRandomChrome() { + return CHROME_AGENTS[random.nextInt(CHROME_AGENTS.length)]; + } + + public static String getRandomFirefox() { + return FIREFOX_AGENTS[random.nextInt(FIREFOX_AGENTS.length)]; + } + + public static String getRandomEdge() { + return EDGE_AGENTS[random.nextInt(EDGE_AGENTS.length)]; + } + + public static String getRandomSafari() { + return SAFARI_AGENTS[random.nextInt(SAFARI_AGENTS.length)]; + } + + public static String getRandomMobile() { + return MOBILE_AGENTS[random.nextInt(MOBILE_AGENTS.length)]; + } + + public static String getRandom() { + int type = random.nextInt(5); + return switch (type) { + case 0 -> getRandomChrome(); + case 1 -> getRandomFirefox(); + case 2 -> getRandomEdge(); + case 3 -> getRandomSafari(); + default -> getRandomMobile(); + }; + } + + public static String getRandomDesktop() { + int type = random.nextInt(4); + return switch (type) { + case 0 -> getRandomChrome(); + case 1 -> getRandomFirefox(); + case 2 -> getRandomEdge(); + default -> getRandomSafari(); + }; + } +} diff --git a/project/src/main/java/com/example/view/ConsoleView.java b/project/src/main/java/com/example/view/ConsoleView.java new file mode 100644 index 0000000..df28fcf --- /dev/null +++ b/project/src/main/java/com/example/view/ConsoleView.java @@ -0,0 +1,112 @@ +package com.example.view; + +import java.util.Scanner; + +public class ConsoleView { + private final Scanner scanner; + + public ConsoleView() { + this.scanner = new Scanner(System.in, "UTF-8"); + } + + public void displayMenu() { + printLine("=========================================="); + printLine(" 爬虫系统主菜单"); + printLine("=========================================="); + printLine(" 1. 网易云音乐"); + printLine(" 2. 中国新闻网"); + printLine(" 3. 当当图书"); + printLine(" 4. 豆瓣电影"); + printLine(" 5. 数据分析"); + printLine(" 0. 退出"); + printLine("=========================================="); + } + + public void displayDataAnalysisMenu() { + printLine("=========================================="); + printLine(" 数据存储与分析系统"); + printLine("=========================================="); + printLine(" 1. 音乐数据分析"); + printLine(" 2. 图书数据分析"); + printLine(" 3. 影视数据分析"); + printLine(" 4. 新闻数据分析"); + printLine(" 5. 生成HTML报告"); + printLine(" 6. 生成JFreeChart图表"); + printLine(" 7. 导出为CSV"); + printLine(" 8. 导出为JSON"); + printLine(" 9. 保存到数据库"); + printLine(" 10. 从数据库读取"); + printLine(" 11. 返回主菜单"); + printLine("=========================================="); + } + + public void displayPlatformMenu(String platformName) { + printLine("=========================================="); + printLine(" " + platformName + "平台"); + printLine("=========================================="); + printLine(" 1. 搜索"); + printLine(" 2. 获取热门榜单"); + printLine(" 3. 返回主菜单"); + printLine("=========================================="); + } + + public String getInput(String prompt) { + System.out.print(prompt); + return scanner.nextLine().trim(); + } + + public String getInputWithDefault(String prompt, String defaultValue) { + System.out.print(prompt); + String input = scanner.nextLine().trim(); + return input.isEmpty() ? defaultValue : input; + } + + public int getMenuChoice(String prompt, int min, int max) { + while (true) { + String input = getInput(prompt); + try { + int choice = Integer.parseInt(input); + if (choice >= min && choice <= max) { + return choice; + } + printError("请输入 " + min + "-" + max + " 之间的数字"); + } catch (NumberFormatException e) { + printError("请输入有效的数字"); + } + } + } + + public void displayMessage(String message) { + System.out.println(message); + } + + public void displaySuccess(String message) { + System.out.println("[OK] " + message); + } + + public void displayError(String message) { + System.err.println("[ERROR] " + message); + } + + public void printError(String message) { + System.err.println("[ERROR] " + message); + } + + public void displayInfo(String message) { + System.out.println("[INFO] " + message); + } + + public void printLine(String content) { + System.out.println(content); + } + + public void printBlank() { + System.out.println(); + } + + public void close() { + if (scanner != null) { + scanner.close(); + } + } +} \ No newline at end of file diff --git a/project/src/main/resources/spider-config.json b/project/src/main/resources/spider-config.json new file mode 100644 index 0000000..ee9af3f --- /dev/null +++ b/project/src/main/resources/spider-config.json @@ -0,0 +1,46 @@ +{ + "spider": { + "defaultPlatform": "NETEASE", + "commentLimit": 200, + "searchLimit": 20 + }, + "antiBlock": { + "enabled": true, + "maxRetries": 3, + "minDelayMs": 1000, + "maxDelayMs": 3000, + "useProxy": false + }, + "proxy": { + "enabled": false, + "maxFailuresBeforeRemove": 3, + "refreshIntervalMs": 300000, + "proxies": [] + }, + "throttle": { + "maxRequestsPerMinute": 30, + "minIntervalMs": 1000 + }, + "platforms": { + "NETEASE": { + "enabled": true, + "description": "网易云音乐 - 稳定支持", + "features": ["search", "detail", "comments", "charts"] + }, + "QQMUSIC": { + "enabled": true, + "description": "QQ音乐 - 实验性支持", + "features": ["search", "detail", "charts"] + }, + "KUGOU": { + "enabled": true, + "description": "酷狗音乐 - 实验性支持", + "features": ["search", "charts"] + }, + "KUWO": { + "enabled": true, + "description": "酷我音乐 - 实验性支持", + "features": ["search", "charts"] + } + } +}

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 Ag8%>k literal 0 HcmV?d00001 diff --git a/project/charts/movie_director_bar.png b/project/charts/movie_director_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..f71597d5364c2bb63d7a580f460828976e45cc1b GIT binary patch literal 21205 zcmeHvc{r7AxbHHR$W$cC6hew(A!M0{ut=uNDYOtWj|<6MhRC!`AKfQ0(J3R06+{5qw-S_>3+)-1cAY&whKp+&i zmE`V1AVjPX2tg$23Gf#kPGTqoayRL=oV1pk@zUriCoS!irqvYWSbJ*%(xhWiaHh32 zVXF1?=n{2fex||PYo$huuGhl%wfxARUm#T?CgwcBc|}8C{tnI46C_oc24NM@=a)?9 zq-11dSR<)d)w~Dl%=_}TnG3UXwF0&ek~FjCwY3|fj`H?>uo%}d`qN+#kd2r8ZmIYa zUoSRa{Bc&0m>PdX20{qI;dKYK6omDpZROOt^#FdakNX2Y2f8imHa0d}?xS@_2iUBd zbCb!gm>U_25yD3s>PKebOybkXN_DTjxvXh)qHU2+gl3kSyGfa`=aP_PGiO}9Td(j>FRBCP$kl>RtyQpPlS6j&K+*vD6&* ztl7qRPS1ER&n&JJoj84+#e2te2-o3cP-J#{9LKp{$G%-ZIL++KWvy!W4w~&>mSyR2%LKwtd9uF-vmrFl8 zkucE|!F6yub+xX;6PG-;%T(-&#WdoAs8~|Am|ck=W)bR|kgqbr1d}Hvccfdkl_^=t zxO_Hseax3@*42vb#$cKT1`D1z?9rhePDq-->~MeAMSOOvTZNw!vp~UGO+_c<8wDII2FV%l;}zVH*J2j9F+d9vDNNqN_}nSdjghF#%%;VCj! zG9J@9+$i=kW`SNR=~ECD7lwW__9ANohff$wzS0sPaGRc2SGFaf z4$-X=g-2s%9;u#7ql=Wzh|L6h6=LqTe;{$HU_%edRZaI-}hK2&*0@*AY{eg|X|7)2(kL zZ^RrL)~ahJw(G1NC8pLNF4U{lFgsm3GO(+Saf?9vayoW+5(O*h?AIyG_*cw0Q@*HM z9y?qbYeflJ!;T(6KIp9IDdI}?C4-j&L9wQB==i>9p4dc6UFU?0;@tPz=AgTK9O)eLE%fU@#T#-X?)13|0`LHG>+p z*P=Otn2@#GV;PBu>ZKdkA*|wmOc^Z{sy!!pv@U5AjjB0aheJ}^%CJ%{{04iVzrMB?9xCD zo4FDek}gQ11g0?=AEH`ub{m+DqttyQodr~^$bLeh`2I)23*4igo5d#}W=%&u%#cW$ z`UT(FOGuAp{JNgyeZUzJn%$*KRJib1iH|5)Cx34(u0HAfsSt;r+&ff~`%hZ7Z%-2j z>&!URXui9wp7OZdkwGeo$QP}@+x7XvsAtrX_xOQp)iD1-H-EwfyP6yC?@L9tC5mv> zO~?7{#?|r@K?Ej`EU6&Da=NDmoH7fMOV(x52dPK9EV!CjcW1aY93D1UW|L_1#&z-g zOSi*>M=9^OZBKnSJVCAKQ_pg^669jeSD)B^&^h2U#cQ(aos-G)V8Fzu)<~e@j^?|P z-U3gfrynE8eXGJ4g|1AMPGSokUCL}nt&Sx2D&=2#6;*BDIs>fXzT^@C}cm(aXN;nc4>LDVLiGuc+^NMg@x} zWv$=KtG6obEJzeLks(kR)+bRN21`(78{}!k6<{rQX)w{QF2NxsxGXw(4wo7d%jIHn zlrfR zq$Zb!zTd1{zt`93>2!BLl1+Be%81e3VJ2-Bz3|>me)q7MHa#~l&!#gcFHg{CFUtqD zvxi%*?!dV~qyp2Cj6@K^IYY{1FXVuc>tI&|y@^+sv4mlsQV1INDkf%7J1$Ar1lgyW zDBLEztHww8Rgnd0Hovg21ph{~AapHL{84*S<9c(sB(7Mp7~7@AyPYI{$|%otPAJR` zL7N3;eR5}Yf=8EoyV~+fB09+(Kcbqkfl;S|_5>YTB1n>63HVy6*SqU8!zZ*=R<1n0 zwf2?W#ehpRk4>#kA%HLlWeKRhkve zrH<;!QcqkOF6Tn?89BBIVffXP2GXx{?p0U!6*>tV09`cUD09xIyf(2=#^Uyapu?3s zc4RV0gVY0f?6%j^&lc--*;%UmD$zcbnJ*6H4i3W=ZfzW;pWWF!LZ?P6

Uk$T_!mRu#pB1n>EWIy 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ʼn&ya7C>o)MqDZh9aoB(qp8 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%0A!tjsgIp0*0!i}C!TeZ8X42fU{e6Qav0Xh< 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