From 8a35fc69ff3ef25c0d06ad4cced5153d96a68e01 Mon Sep 17 00:00:00 2001 From: zhangkunqiu <2747209206@qq.com> Date: Sun, 31 May 2026 14:23:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=88=AC=E8=99=AB=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...506050322-张坤秋-期末实验报告.pdf | Bin 0 -> 391578 bytes project/NovelCrawler/src/cli/CLI.java | 85 ++++ project/NovelCrawler/src/command/Command.java | 7 + .../src/command/CrawlAllCommand.java | 47 +++ .../src/command/CrawlCommand.java | 48 +++ .../NovelCrawler/src/command/ExitCommand.java | 33 ++ .../NovelCrawler/src/command/HelpCommand.java | 26 ++ .../src/config/ConfigManager.java | 97 +++++ .../NovelCrawler/src/config/config.properties | 19 + .../src/controller/CrawlerController.java | 63 +++ .../NovelCrawler/src/crawler/DataParser.java | 399 ++++++++++++++++++ .../src/crawler/JsonDataParser.java | 79 ++++ .../src/crawler/NovelCrawler.java | 120 ++++++ .../NovelCrawler/src/crawler/PageFetcher.java | 110 +++++ .../src/exception/CrawlerException.java | 13 + .../src/exception/PageFetchException.java | 20 + .../src/exception/ParseException.java | 13 + .../src/exception/ValidationException.java | 13 + .../src/interfaces/DataParserInterface.java | 27 ++ .../src/interfaces/DataStorageInterface.java | 16 + .../src/interfaces/PageFetcherInterface.java | 27 ++ project/NovelCrawler/src/main/Main.java | 17 + project/NovelCrawler/src/model/Author.java | 23 + project/NovelCrawler/src/model/BaseModel.java | 28 ++ project/NovelCrawler/src/model/Comment.java | 26 ++ project/NovelCrawler/src/model/Novel.java | 56 +++ project/NovelCrawler/src/model/NovelRank.java | 30 ++ .../output/all_sites_2026-05-30_11-49-03.txt | 34 ++ .../掌中书城_2026-05-30_11-49-02.txt | 108 +++++ .../番茄小说_2026-05-30_11-49-03.txt | 110 +++++ .../起点女生网_2026-05-30_11-49-03.txt | 114 +++++ .../NovelCrawler/src/storage/DataStorage.java | 80 ++++ .../src/strategy/AbstractNovelStrategy.java | 177 ++++++++ .../src/strategy/ChangchenNovelStrategy.java | 141 +++++++ .../src/strategy/CrawlerStrategy.java | 11 + .../src/strategy/FanqieNovelStrategy.java | 141 +++++++ .../src/strategy/QidianNovelStrategy.java | 141 +++++++ .../src/test/ConfigManagerTest.java | 34 ++ project/NovelCrawler/src/test/NovelTest.java | 61 +++ .../src/test/PolymorphismTest.java | 21 + project/NovelCrawler/src/utils/HttpUtils.java | 73 ++++ .../NovelCrawler/src/utils/LoggerUtils.java | 64 +++ .../NovelCrawler/src/view/ConsoleView.java | 71 ++++ project/NovelCrawler/src/view/FileView.java | 106 +++++ 44 files changed, 2929 insertions(+) create mode 100644 project/202506050322-张坤秋-期末实验报告.pdf create mode 100644 project/NovelCrawler/src/cli/CLI.java create mode 100644 project/NovelCrawler/src/command/Command.java create mode 100644 project/NovelCrawler/src/command/CrawlAllCommand.java create mode 100644 project/NovelCrawler/src/command/CrawlCommand.java create mode 100644 project/NovelCrawler/src/command/ExitCommand.java create mode 100644 project/NovelCrawler/src/command/HelpCommand.java create mode 100644 project/NovelCrawler/src/config/ConfigManager.java create mode 100644 project/NovelCrawler/src/config/config.properties create mode 100644 project/NovelCrawler/src/controller/CrawlerController.java create mode 100644 project/NovelCrawler/src/crawler/DataParser.java create mode 100644 project/NovelCrawler/src/crawler/JsonDataParser.java create mode 100644 project/NovelCrawler/src/crawler/NovelCrawler.java create mode 100644 project/NovelCrawler/src/crawler/PageFetcher.java create mode 100644 project/NovelCrawler/src/exception/CrawlerException.java create mode 100644 project/NovelCrawler/src/exception/PageFetchException.java create mode 100644 project/NovelCrawler/src/exception/ParseException.java create mode 100644 project/NovelCrawler/src/exception/ValidationException.java create mode 100644 project/NovelCrawler/src/interfaces/DataParserInterface.java create mode 100644 project/NovelCrawler/src/interfaces/DataStorageInterface.java create mode 100644 project/NovelCrawler/src/interfaces/PageFetcherInterface.java create mode 100644 project/NovelCrawler/src/main/Main.java create mode 100644 project/NovelCrawler/src/model/Author.java create mode 100644 project/NovelCrawler/src/model/BaseModel.java create mode 100644 project/NovelCrawler/src/model/Comment.java create mode 100644 project/NovelCrawler/src/model/Novel.java create mode 100644 project/NovelCrawler/src/model/NovelRank.java create mode 100644 project/NovelCrawler/src/output/all_sites_2026-05-30_11-49-03.txt create mode 100644 project/NovelCrawler/src/output/掌中书城_2026-05-30_11-49-02.txt create mode 100644 project/NovelCrawler/src/output/番茄小说_2026-05-30_11-49-03.txt create mode 100644 project/NovelCrawler/src/output/起点女生网_2026-05-30_11-49-03.txt create mode 100644 project/NovelCrawler/src/storage/DataStorage.java create mode 100644 project/NovelCrawler/src/strategy/AbstractNovelStrategy.java create mode 100644 project/NovelCrawler/src/strategy/ChangchenNovelStrategy.java create mode 100644 project/NovelCrawler/src/strategy/CrawlerStrategy.java create mode 100644 project/NovelCrawler/src/strategy/FanqieNovelStrategy.java create mode 100644 project/NovelCrawler/src/strategy/QidianNovelStrategy.java create mode 100644 project/NovelCrawler/src/test/ConfigManagerTest.java create mode 100644 project/NovelCrawler/src/test/NovelTest.java create mode 100644 project/NovelCrawler/src/test/PolymorphismTest.java create mode 100644 project/NovelCrawler/src/utils/HttpUtils.java create mode 100644 project/NovelCrawler/src/utils/LoggerUtils.java create mode 100644 project/NovelCrawler/src/view/ConsoleView.java create mode 100644 project/NovelCrawler/src/view/FileView.java diff --git a/project/202506050322-张坤秋-期末实验报告.pdf b/project/202506050322-张坤秋-期末实验报告.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5bab87a6f86c2421e75606fd1a3625863fb6094a GIT binary patch literal 391578 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

4rnU4yIn=2>2xlgEb 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≶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

YvKZ{Schi^0y&) z$d2;8k*NB9xDC2k3T1>`Xcx{s;~ypm=a$0JQ&D&jZNA*=qH(cT)hLrIc57+o&fg|- zt7+zTN3&_v4#A1sdL~m*pYNv91?_>9SZV85f^7mA3Da`8tcgqf_zq(xGUzWAfV(Hm zsRql9=ydb+a7k%mRD2b=wUVaHZX}+v(a@-_ijw!ovU{A=`B`V}6ICJ=$(545wJD=D zCUdyUwrPDYhwXawv}o-b#riZU5LEaSw`qZm-cDJ05vHWI`mRC#3Kgn+*Npv~?CR9?XtT0A9Y$mJ`kJ_Nf6J z6k7A6XuRbtH3|GIY3d?kF&k17z6ie6bw0~;SJrWD^t3=Bk1$5ubmbxmtu>i+yyJw`C*XF5b04V_?#%~W~^~DZ0WbOsA zu`0u3BRItUW0R34ZD5esA0aG5luMBWSOB-+n^zCf<^irZ$!`!fJr#I}#Igb6m z9rWvwWjG@Qzo*TIf~#Ko+S`iBBpL}BIoyIydg&nQjn>xIGQhNc)lSMT{a_tCTD_6* zdVwJQM}is+?ZeGls9a0SX!n_ARI)ZQx0%?NcKD345a)6)W<87F{b?ciXuGV`1ISf;4fkEyOH^qzRvCU1GFOho0S=Y zJyn=SgQKJsfA1~jWv}Pj>3J>4->vU_I;K7ZsVQ1}`8qSE+krzv)W!8NKk1G($Uobn zmC|zfgJQ1uQxjsGQIsJ~(XZX#KcJGNw=ni?6t5kT zc7)OwQGai2t&Ic1BS^EOih_1)4r@>kFVw;!^hxDCuXVQTtj%L`A!(i5@!uCbf~dlc zBYDa_LZ2duxK^ZCZ##|NysfQyAvIezRBaq9Vmia-s4ORx#93PaM%Yoz>+W(CUz50i zgOBM*f3wukNMDboKqUU;MLKW1FNvX_@c9tZNj}~Dt1=o=G!S@NhA9DCG)R$l1YPvF zsfeycmb&>G`BiNc_cwUoyr(Y9lg@_j{TuYhDMN~gAJui-1N(?)WIwsbD3D6i@tovK zGP%6da7+4vWI;|rl||P!WWQ(4K42#znK~EX$8~b;zox*L!Q~q9WsVI5CtPt-bTfJ; zZ8KBLaTOToXhN0nhN}Sb1*7s!CInny>m&g~o730YUrnQ-_LQY?L1RHyq&I21hDbE>!Z8om*jcw zw>Y{e9u+r1`@Y-F8CRGkd}`y786=6ZJ!UPU2+gu>lo|UOx*onUiQ*J2I$M*9R&7wG z4(kBTI6B_XR9E9fK$!2uJFPD#ciFMOE&V8f*=^9Dj4Xdc6)a5uWn}sMOBJjDV4U^y z@5ulwhk|Mm1{ra846~(sgB#c z6$b%|zw+O2FHjN;jsz@|rD6B;x{ zj2mXd+INp3qh*|Ua)R?PAEZ%ME@cVA&Ecp>u04`JXFuIq7*7ib-4bA2WLD5fo>!Ek zup)BktJMsed7ap+$krYSk>3|@Xgf5WNX)ZT7Gp{Nn&4v*-Gij~if4IJID(bHNqsJF z5zSQ!Z|$tNPbNg5FwHDttS!sb23T5-dXrAJg*Wg?K$Z0pxZ3dwU!4yjxU!qQcSaaKpcae1o&0CG775oMX!PBS5inO zWL}R&j)~Qr%E>`jjeNisGGVV9bIv53mo(846^JhxByPKLM=)*& znXJ^~%ug8p)KKf5fL%i-p&8jaSJO&03h(nYMYd`rL&1?!BEjx84Z}A?#G9A_NuLuK zAo^xvE9@axhNZo;V?J)^3|^wmVKv1m13{`MFjfN5m-n@k5sco*3FY8kzigFdFtV5? zZ~^BCIIxFSm%1@bOB|qT$1f=rC&f!OwTi1VfqM8BeYKg8kj0(s7Fe)*O(yN~ctVVi zUtSjKvXu8vx4mpy7(|)blD&EZMX_r1>3tsJ5&g_Q(%r!At_G%eSes8h%(r4*+B#1= zDeu9^rRUhAoSB&P>{4qo+=&`ui*in476w8cBdMy~P@Pc*d5j4^*1~Mai7!A0aib!W z|2@g*jo%SR2vLBi={v%+Ow>?Dy=Im&+U8_p&BiU3uN?z9uRrmkrR5rsIVx}YU`*C{ z!g+feu1+I97^uqGF&=uR4%8P=XLcix0Me3m3UyPMj4^ia8Uexp{T>8@~5&D2tUn4w+&@fkUY36s`$cSnGo!VwHFgs%z)uy1Onjc zY@r((5H_7o)aR_F*1IYi{B6!} z5I~MN8g`z!ZdS+blZ|sRU|;yNI?N97u225V;Ri@9_WymeLci-C|F9BbaX-UzKlpfp zda+bf!vkJxHRSBm`C6G!_j(Z~-g`*%0BQBK6w0R|qoMwolqGy6SWiiQL;C<99}O9v z{KL){65Hv?gL13Xy%B!?N^|4bZw}J=BX8V|qNQhNW)AFbB0Yp}z3Gn2JLNt`UN4!4 za7({7eJ6jY{fRfIT;AvZu=mzcadm0FZ~+PK!94*&aCaxcgA?4{t#Fqhfx?|&2?Td5 z91PIns07T-@f;D&ze8ZTEL=CZF$bwdp|#UHkU8w;^*@ksu4sNKfx8wDs#XC^lseiM=Lpe<7 zK{9KEsVl-De|3Y$Ruu3+&surdk-9TD*Hs`6hAOykn~qMz6XCt{-Jr_K@CTcH%swF1 zh^;seV^ADIIp9S8#4g_F<;N8?7z5_w9$Th6gZ9StK$xv4nET@40J^UUF`~Vcwe(F= z8w(MvyBh0hObB1Di@$m9XQCa?TjuraeOvUa0Yxv|x1SAX3(|6OnKoV9hfrRzI1824 zZaOPD@L`bn^`4ac089<2{s3SIultQcNyC*t4HSXUWPRQA4?xcl6m>LsQ1}6mK<*nm zx9ARDX;>a(;;eDp6zohMs?_9KiNV3dCq0|O-N3m>5|7N$B%t)!KnS|PIYh{Ij~AP` zC=b`lv8=OqU_5;8;cC1=te)u`QhMDaI!SSzK~_$k9+5xbXH&>a`Q$!mZ-VFy>K?tv zRnoH>3KFFXGIWg15=m^o_WL#)`a$`oMC&P@qeqoTIhZmN0U;C3NF{NBy*B)ifQP5| zJR5y!<$l;c*S*aBqfM;kqY-xwT#O&9R;YU839~;<)1+OXK-vVWK>w#F7Pt};e8yB$ zsY>GQSCQ;8cNie1X$zGw$igUR#K#$G>wszytOGD=0Z_)hq8C&|>WQYKDdl__uKMgG za+;E?#d?@XlN6Uo!c?I#cOBykTSoi2ADo3}Ucjo?v)})gqG2Gk&Yfu9P$>NR&OPHUr7Ll7V}|z_Lw`;0_U!Q zS}n2ud}^Qg^DAPEZ=e-q2A+q#F)=3KMOFYj&?Z19(OVTuYiXy^Spx;fY2LtZToc7l z=Hsex=!M*C^<=%88q1ots_q{EO9|zAl)gPZAoO@SGVNY!V?$XB^6WOH^mRxmv3-0kNlM>azIU+*+V>G5 zYVmc8NBoF=qwimui)`Nq-TvLckVOCLyU{ zL|6OIxHLd%ka1jzA&kegL#m4)sa>x1auURQxS&`ZFa! zpW#2C%zw`7kd%h9=vWjDax`sNC!SErRoR{Qkc_^H{QL!{MBuByOVkQ|@+> ztP-FN_wBY&S&Ja1fH?7xQaSbRQ-Hv;X(D|LK&WB^EGuJ6j`XwM>>{oWLTE`a450e? zb>+%}+L3zrUTd{EEaA) zIARxj492j`!(}Gyw01E?f3EvU(-66-lP2<3+v!ZyLSpotd1|_FRAFDlIh&F>|d5L1gE5-6`2pxn{fpMkdL!kR9`hHw@Lv<( z5Em|@pI~|APq5s;+wTk17uI|M-#y9N1Aid%<@UBz@1+1NMnP%V`lyObVzru7?V4XKz!`@SVIwg-a3)zmwW6E+{p06s-T$f^_DvRDBz9ueR^oY4cK+JMZI{z z=;SOe)p*~-kD>%UYx2oTXSO!aPb)9w<`3^~Y!}nt5xs)5+tZ6s^h#{5b_>)5ZC4J~ z<`}U!bV*SJ?7Y?WdY}lc8%zareOoa3iZtOpEzIRHB#hki69r-946(FfQET&&zmyNMu+bbC4 zEYDxFP@I4~RrRMYh0ob6{jLu8egHs_hlRvuJTh`^6x#BfiH?;0^1}=W%_2VS#*KI8 z4X)>!{79M0UJJSOnDbO)Ex1?HwB8WN2Wou&4AnT@oaRMiFRw1S2wzzRq|b%0%HJcI zyMREF}UrRzYCVE$(t-5nSAPhB3-Dw8#19`cC2 z(6Ff4d_rCC;e*V=QE3fEjt3$nBFhup-JcXZSQ)P9V__nWxQJnhF+j^JAVW^%qd!}?Vb09X zS+OZNT9fQhC4Z=uy`+0V*fXInU22)e)pi1ZrcfVpLnG^RB%m&Zi5o^@!y3OWbiu+p z+@bq=FzTuGCx*JpVL~s$C%(q!&TrTF5qnhjhUl@$5%z#cmG-b4$a)qV%}^_2NjEhI zRUeVEu9^r&S(y>eLG?$GOD(;*fco;3ZJ82-Ky+!r7J7uQ%W{^hv8dv&cdBea*qx>! z2rU3Jt!pdkngg?4*@DEH-ZiI6wzpOGJnb$rU?_BFFs8K*a!&%e&S4Nh{NYr z+jGcNqCsAO=_Pq|N!E>yUh>)|qyS&O<$bV@%0>_R=1UUYsb1B^*zuag0Q;SjG?es# zyzjT7rr|fDy!QAI-hXWXXXPfE@`@kEcw3?#cv^Cf z$eOeB^0eK;x+7QTWh;5_ey7b^C~LeF{rI1RX!?^3``3d&m@1eI!^>7%G|_+7q!xQUca_bCS=Jv1YZ0?cQfL zCGp^J%iomIh3_^XSmy4jsrd>dziVx+w#W}x^I%v>kRVL}JvBv3zcbFP9nhE+bsc&+ zVOtUy5X9H(=EFtlTVIp_Eqq;O-N?BFI-mP?x?p+f@R}qN8J7)*aG498Jz$7`Qrn(@ z{J^@YZ+``v&wnxOLEx5Q4D40Zc`33?+ESbZHMh|8*34P5%n{3y&zzD3$C}hyAbJGB zI+;B2pR4i$xekgJxI^|7Pf)A7JUsGts=lM3P^+e76A*_dE;W6fpPzdqkD?8V4hXB64?#9O|vTuqZjeh*-I9HdzVm z0AZr7?QAqO#r`RAz+0J`V=hFHJZ+mG5ENcJB zjFkns42gy`*nJR3iQv_~WyrVgKr3bks6cio=D&56w*RIU(7pQH*!vUh{O@x8n=gF^&WjKN3B+F3W;1yGV;!_GT|Z(b7b2Y&#ND53-- zU%`KmqeKI3IXu4Gd0Jf)63x*^(Kl!B>yM*+BxPKmOv z>x9Y;X~2UwS)CPMN#lcK7v}*miZi^ve2(>Fdib?PUYX=Ep8=A?Ij9Gt7327n`R@?T$%3JUknrJZrW#?s5E~adQfMa0{CH zTzhA>Y~7|l&9A5vvYO)DmthWM+8vUG5o@0wAJjkwD0la-GvO1TST&zwY%H~yS+t>> zwI;udP?->}ULTi1dS`HUR&Rc-;o9?dDrer(^-7D1h+`3HBJJA(SQ3Bk1+jwQ{eEVC zi}5uRN(N!=WT?cX?LnFOoDBq8E0W?%0HGO0jPK_Nn2;X;6prhC$`<=)y^QO&MN2bw z(!z&_y*oQPQ=n!l0ctl(*rkUG9q~>0Q}1SAR4V78imcm1FdReLa!SL1Br5zG$-}a` znNZMJbH{4W>`@s5^PGGO7#uE4)#nu6l#+f)GZx~1W<~#6b<(d^X!tR}*m7Nh@(18e z=)jrqtew0Vf zkw~=jjrz^DjbnJKu(No&`lgH*H?WxT_QDroDnjYdvXpAz+C56ZbUhIt;-+ z*jMSsFkJT?AXkFYyB0+vl$90287{^GKM&l2=4{;Hm=y1>2o z8yVFdJlKbEF{^O)J7&p~qnSPgo^|wwT@2FQ&D1poB-wH;29@1UqXRzWN=-maVg<99 zfb_M)aA>jEdb066>qqQ}E?cKo8VJ#AhR}hAtOp!(L7wg*D^!-MuKBmfKmSob^E>UReEmlyl0M^qV6;+QSTXujo)qv~p5&~g zm$OEW;I1uw%s~{D;rKCU<3{#GB0bB?63m#ZlTgr|EnRz-Xf(v1WBFJIOavnG+`U9`;j<6tHEaYmE~iJ1 zM6qB9P0H(|7g;LrD(zmX%yrM9NTLm)tnoV;0iGR-dnVR)&Psr-^J?%syB6wA&M>A8 z+|@1l4Z~O*)6eRoVA?mU7G6SXG|3kC#K+<$iu){1W^}daSy37^;W#|D_yhK)U^Dzz z&&lBztksXTYY#wJ{lQ@BdA9m*TMruXZr5)4mSjjx6I=CBvIj!XahtxQx>dZD*6UXZX*?2!M-leq$UZ&XPgdV6(Sw(ejy`(t}5T~p|7wy3{Ryu}yzSThNKGjc# z&r)ISha4E0V@IcIHdn`vgA@@^yuQp^?nZJXfe4m8@MGWlVS*g5Cx_82$d6+db+sSz z_aDVelKGok?&{Vyc3IOept$`vBA20@l^t90@2+kRf*aHIiTeGK7y`k1{LV+}-kimL zcJ5o9d||}Ox_oN``frHEqI;16XP)y-$M>!fKD*D2Aa=_uo5}$`+V9wY*a-sZ=)k2D z+?M0-AWIG`xj)0m?)S+DYIEzg}(n^YwbeIN$nYY;-q#(qx<$vxqy~@7_?T)ZfsE zb@x+i^l0tKpI;Kki6l%L!%t$9%z?R{GGi7XUtP=D0kiF1x>agZrz<~+?pugrT4=P_jVcd*u<&=FXY}w@dBAj*TQn3EuElSWDFO4;dln zg7OOuJQuj3!l5n$8XzzcR}QLyzn-kRQk(-XC8ULDKnGew=;fy;c%@7q>|IEU;R!rq z1D0s2vE4A~`8?VRuu28$ zqVMjKrNpJyVCg-l3>56*%5SdqBHoLTCe&Px{cIFUk;ubyxtjgIEDiAg`la``zud%K zVsII&OWYKjNaz~le5#d{M9A`?J8L1Rw9stA%+o70`E6*9A{lX>I!hw3nLFT*1)-N7X43zoLe|b4*aBE zU6`%GU#2aR*~KxYXHn{P4h^{1X?=>bt`Tt&LR~V*I|@CV>IIq{Y>tYR7r`D-S{)@3>?7^5@t-z#cMv zzYFiq0WBM_$H03afYHPOZXZ?$(6oG9=|8|{Je>r&*6A5lmso}RcZmv|y2Ce=dT_X> z^)tQ{WtBC>S7AD?k{yx>1+3*8YW^-2fnaF3ItV9wTE=isj=al~-{;799!C*R?lnM3 z>e1~-)C2Xg?E3aSPB$dnI;&Rp*_&Xh_{jhQ!}jHM2c8noS8%m8C!YC%E-2DyfxFnc z5~E@q(_(BeeRP!53R77!Tc#)QUpN!H;^i=FGlH6t?1{1s7gS#%`b-fXX+rZ1(#t+- z1Cl35jcp(MLibPe4!*P+)x!avDOzX^rGD0(g=Y257KVN7+=_|2G$MdO)dNF<`e7w@Xs}J;ZZ}5+H3H`FzVE&V2=XBzyjqR@fpCAvuk7%US zI7)xn;h6v14o5Fba)NO%CT?;-ubZk)_4%wg4IIGak<`lVxF?KK!h?fRPDw&DZA=7k zA)pBV4(Hv#0^OB-;FxuRcm3h&SvG&bVrDa$FcFloi<`$mUw$o#UOy(5)ao}gsu^`d zOvo?68gP+~+W)FJ*3zwd$Bih#VRL9g~@g0^MLzhEJi?=(Og%u2c??0gF9GPzpB7CwEuN z;I&`=!Yo4XYXL^GeNPi0v?axSJ_(IUIkv_qF9sZ6bbskXM&jARvBFc{X^b2MeUD^p zjwHsRDx_EgjXbq_RSfnNzX+@5#)7NIz%_hC1@1n*=>kxYhijeJ9 zItN#u91FEwj?<>l^AiNcJ}go497RsFZ{h}qt&38FNA#S=o!J9CrQPoxqapc}eZOy=mqF+AS(Otl zv-BJ)FW8ygj0d`TgYo+JTxD{!t58{Dr;t-9kFbUEaSg2aaI3l;SCgtIYdK?e(0E}C zc!XPGrK055;2eJdtkVGbtFO)@iO^nBA3p>x>dbyPRFk$t3{2p(EpgPg)e2pIgS7P@c|}OCK&vOjvbhhTZ|+2hyv0-=qDkh+)5}>i+73a+ zV^#O8?2-uK#MF=lfwGFu<+C2CFFpOlQH(C{Y9jjj{*E>;9v-~zdLvxl z6Jw#9Yz(fNs>Zf-QFB|)@159`A#D4SBS2++OV5xLMg3`AEkgDR1r*69Qpea~twM1M z{^-#79vq^3zgbA5?F7V#-lL4^2?Z}rjOWS0I{{haRb7(lMJvy^-MaEKZJpG|DHy?a zbi|!q7C+?PQ3ejL%@nKInXyZljjSq;l?UIQHQdo%t;c};?OVMd18N9^Z5i6&_c%D% z@15j{5^OnH<1H*40)(7Ba}2e*T1yI15KRa%&$v7|aw{f=EtlfCdLc!W2+lBx&b+9f zW8qHB&Z*|d(7cX?@3^RYTor3H#Nl@+DvBU+msZ=14HK26ogRNd8PmJv3^$U%Ko-f$h1eqzLRZ%7G>f#| zVbQxcDs?9>wku^q!2@?yfVJ$^CT2|0RYLU+OZc#=AY<%#yV13nH!~aZ#{8_?tkE)O zD1D3@%}KJdZeXxk|C>{fV1&GV)W>&I*F}r;AMH_kIM?wa9-;})XwcPnPU*?V{3))3 zEPYH@Q3`|x9HH9zrR~ZaQwju&d1G?7`1I8VvW zfCScoe_5Sf3icn^tn{~M=btTCTeW`qr~P>;Fjq0m$^9Ho4;%Q?Y6-OcIed?T_GFNO z8l=o;ryN-u)}NVurvgK6JoYrh2qaN5``X4FO zHQ@zu)S^O#lI;si(z;5L)eN;+C8Ve;PtQ%)c#cFcnNoePq^**;869>>UtqDi>X=g) zQyHgE=$qBw@#}bC-ylC~OIIAAZ7aOJQ!oGcDUT_Zs>(9Z-S$o0#^vD$6OuBs7B$LU z)*aPylW~gU!RDz7t@-T=-5V#Z*-Eserx9lSU}fOLq2)9N6lu{eMUko<+jrs5kT@l{ zfTMqn%4PksORXD;t-PRg7`G#bD`3S@@Zna1Av&SY1f=QaVqi+FP(iaNg(3905lvm9 zV&u^IDoOj}o$P>kgW^ZqT$pNqKM4Bd$WFXP&q{ZFpP?^f*97qzcY$t{`}5`!j9#cz zX=_5=zF^SWc3F^n|F~LPUz&|U{jlmGr5GcV>y5;d%ofp|AZ^B#Jv6=Hud_bgh0nf? z3<-~RhM$6x`thRS2)0}WtD)e+E&WI{4KVk$^(tp|^@O3tzLtcsZ*Z>!!p4i|HCMwt z=VjWR$!52Y{HY9O2YE>>`*x`)G8mFK#&5SK0u@RD#=jVKdiezr85m-te$~*57*>e0 zo^n7SSBhDOae75J&sN&mcG-C}qqWZH zQ=JtU<4C!c!VM(ZmMCF{DPggG34PAVL#r)@SB)5Lm{*hctG&k-bAyOImfy4uWgnm4 zI`h43^2?vo?Yh+X%%;7lK-$SoX!F$NG-0i9IS5Mn#|w7`k*T{x8mk$JF*)Rnn8ZgH za?Jk2va|k$wemYx`{yIeM!_$Z)_;(zmH7)x3vfNul!fK}w)F%*BqWv*q{O~|wy93@ zeO7eE@$?h{sKbdnA@c5lh$~+8eNp>2_Ld}%PaibUXOd~Nj4;LupvV2nm5u7wsZz!= zj!4GOv0;XngKRp-et|r%$=f0FpOrPrN>|2f3Q~h!@J={?0$1>0!QZEld#*!^He*?7 zsahp5+oQZPpvH?OlmKQe;w~&fsyPW$J8)rRSw6R(2RiLe{z;M^hvlZ{5s1UvuRF0+9K2x`{8mKYtVX z!G~t<5}L5{?a~8-8q-RAK4-Pvc-}|2N(bL8t%>8SX{wK68s+zQgXm*!8H_p11dQnz z>=e(=09=QCgC5k{K`PC46%CakuCmr~c_upEcb+B}J%Y6J7$zgOF7yZ7azQ##2aDSL zHBHYd&u~o~D@c2IdD@}%K~mkn*-HEXsL08mPL`IIsYdWjM<-G7i?j ztOjem2>%)j4B~u`4HiD&!}jAFHe=d|Vw0B#z@3uPzRE=?a5t7d*@!#{zL>m++zN=A z#K}fnxWD1)yKy7qI$w*n>a&&Xz;usLh8VklsrRa4uwDPq9QFgSQyG~)0o{ei?J_1G#A^>~o;npE)fIL^MC6bX2E4BpjxXkGA@(Zk0{ zL+*I4Zn?SF-nj-KOmUTLl(cHG+rcyKCz!+^P>ooF=jzws#&PBU@gc*%z=Pfhe|A{= z{L^9W&$z~)NiS=B&_yonzYCS%XFq<^3I22%|4Yq~KWBmdg-##?{ZK#_sie6JXLB-^ z_S<9e$0~79qC(;JtML9^3+haI%iIv=i#RHiA|C~-TQ&YyFUL(7tsV5W%~QgEwSYxw+Ch) z(`Z8-tqq1sczDZ^=$JQS?q1_TQrZ;DFd8@+h-K9OjBp+aA=AgpxzPK%lmiWRO8NwO zXH>pbw_3q`i?e;1IS)fYzD5HhYrEX!B(Ek(3pGs~QVaj7w8H}@K)f;xfM|e7;@h&@ zUB0Ri=K1DC@*y~1@53|SJ9_Djcb7B*L<|TY#@9kLgHk@bAvUEK#n*UdiRzuK40?5X zE<{zNU4j^}>5YtpP2(8XLxz`V1RK@qm-(e@^kMcMDWU#O!8!g};=6wAw@L;Ajp4WK zN*_B_nrS+~T7-2{IK51%5%3o`UdFhC*Bz=-oLT5Mw`N(T3j_94%r?0kzSaacga{*R zl%GDgyC2Ok`3_u`R}WlzADp?8rk)SWgtSICNvX{^%Q8}mJA_ru&&ogQNNL2ez+%da z3L+S5u8BB-23E+CSd`-HbbbI1pndUI(pvrMqUmBi(J;QR3_H$PQ*Fb9L}T)roRy%P z=RotHnVJ1xUGw1`225=Wr?n-~k~8vkqJ>tS+Y+QmoZuzD-`~c9(0OpPR`6RUHYU0* z5@&ZRbVJ7nSL|7AX`-_>187qux2b|^DqFy;)>ON7cl-*pw|GfhJ%0c-0^igEM_#nJN$9dGr}3_7zG*dl z%S*{aNMf8NhMZ+%1O5&{5u z*PX!K1Q+q?M_kyx=)Q$O-uwW_Ia0;*ycFq356Wz~7{rHLIG5sh5Q3Owy&Y#@PFosm z1XqI$jkjRJNUk2NlO~yaf-kiB=Y&yq;J>+{*cNELDCF;kcVOe&ifXOhOw*6#jAU9< zs+Y!IwH4)3pl)Z7+RCRSwWf8^UU^!B2Be&uliut=seBc=52aL;u6(y#t<6u-V=%#ZwlRHXO(M6G!B!{>OFR01)?NG#Z*t@6_&@pkjeH?z%+rJE7Z zwBiiJBQdD=)8~jd_V_pljJFV|)yF?E7w5ma*b<&(;3(-z82-2O^ZxS&<6nsrG=Hd2 z^P4y!Em9(b2hDw$cRMR-<3Hj}aSSq%%3R4O5%W6MN%Z)p0yg|G=?lL1e1>X4TM-(XeFq+wcC_%I65YgeF16THn$)__L7=qR2?0_cLu0{N-JPpK8%Kw__?t+KyAHS( z7G8ZQ?-YEibg6&&10XZgGHPeTQH&;`9@gPW(1{b*Vfl5Kd`(O88$Kq~3%hy3dCnY* zYHln2GaJ}I>TYoYrr#&|p=~Vs*G<$tR-pwcXLsDdPBT_SCM<8l)dtHxWMvQGtfyb> zsUF;;`3Z0-3w`=B_fSV2w_sjRH)i*U$vTw}rc7f%AphM2p`Sg_MQaP;Bs{#JSEdZN z<$Iar5*xPSxdzz$1RgoGHH2%JBq)5(*_r@fbaKU=8}1TF2So(L*h9BA zzasJ;r2&>(e>Prn#&7O{9z4#$@iOM z9pPQYtFeX_t;eQtmW?|6$C)@#dxigXWO|qigKtS70#}WPu3PeJM^67*!dzI*zXolbyqKKl~vY)K{jnYfkD? zVsv}l$kW@JBMBuGY*-M&$I~#FrTE_8PTrPI_J+V~Y9OYV`<~3hMP;u0?-9r|JPrWrzvi6$SCdPjCJUrw{C)Wlurw+w zdzT$I2A_Pt)Hc1gCr%b`cWppELF9*IhgXE@veI zn3D6PKZ*NYro2cx-IVa@_|9|V;80(3!@z-oah zCBoq5*CmlrsRvmnpW7XvcAft={zmzg;5*ZY+PZ^Q=VCG+Hj!-P-+lc(J-fmNBTHTO zEB5;YkSWIi`=GXun@<*+Tph2~{6d_)j6d&=bAcLbH(JJC<7gVjxC=W!a%f-({b9_? zqB{pR^d(U&C?#X@H^bOTZv=hqcQg`U^#2e@k>n?sbL^oGZYLai90%&EQ%u5@ohRaUXWE*0#zC>cYjIxhm~kW^C!#o+_(c5i z^-_exDXim}ui)bTF#N^16W96*m5;rXwZ(Iy9+wmmxJ|6cLp_8xE^uT1JV$>V!2OFm ze&TXeEo;|X&z-B6JEe9Mpp5qcF(QI|&V}a3TbKHQW1G5c))``F*a%pa+8UC;C>Wt1 zfUyXejz2t;@4_pMEid<`OIt^uwxu|3&I@(w@n=rJWc{I2dJ!e=WMibsoryVotHT@NN&J=Kx1?3M_@Jp;X@gANnwN+~~e#WUB~yTl3v(|rOFM64!@Jpk-n)W?_Ll5?oTA=>ui z%PcjJc8{Z-!Tai<%?27`2aj@I?e~=NLFf6L{S`2|R4@VQCvVYjb(yX@7ZFEt#tiY< zv;->U!`E2joREfX-jS0nh%!g?B-7P{q0KVog-L+g8L#8*sPLQ6#|D8w;r3bNS8XzY zqh_z{UEuDN);iasS&DIF@VCZ9N(-`vJ@unz;lkaMYZ)&Bf$7yMf2r328)xb1nHhd` zXUsyvN4|;0#qQB}%4kB2nF`Yfcyn}}M{o^m(2Vfm;vvcsxqId;QjU3RZ5$$!0bIQz z3&ye^-9TeS!|@M5$H!t)WmbC^H}7&BhW5&La5QjW+^;t$P?j{bdt*&@9w_80@gk%{ z@p-y?S?IZy<3@Ml6P}?dCkTMxnW;GXm?ZiPc14SI6|~9bbP%W*PWAo|bUZY>bmzF_kB+Eak5=?%q7g;$LT zqCl4?4fp-=np>UtA;i6rGxYAF_0;e?EKczI=49=w{v26v)l)0K=*5jZ6u>xVarn4l z#AkKzY>jJ$NZ)i+WeO90OIV`TO?}?(*)8oQM$LA`)dLa)nh4WB0LSdi7pb6&19jqmSS? z0h`W>TdBsW8^>++CF6(>DBlJRSW?(jRr0zy@3MKFvhYpO0!wvtJD(?QH2XU}7oQ;z z`h@co;kdwHLT{o0+z?0k0>|flWWQ%n)MtMt$%4e%D2UXHB*Xz02?iM8y`&`}546(7 zWsV1`FYfVusC=ypqr)2;lUbI%?VGLnDNejfEPo><^<16zcMSeJo51{63|>(z2;|)yRokuz{$3$~!XKs+I2!0$Ns2_e=epE$dr(^Adc2ER`Q{U*PZFg+ zpOXp)40-UqF!KkO+=?hsqNi*!4>H-^4*Z$o&c5v9oCW*X1U0D)P?BC)5Fd7Dy1fmV z^zfdJS$>(0HMgHtTe>XQ$jA3q=@_N}w<0}nzr}}Fa1gtkDHls<_8jef+PleIEZxLc zVhKhXTpl{+wZ^iaX+V#ZR(|H`#IKgTtMaJ|0ERx&l;O+bV?~MBn8XEyn;(Cb1&jz- zxE|`!K3$3Pq2A}aQMCW2} z!c#rk*N-Q%cod~eQTw4!?BJg(I(oFE;MXAa#mnS{R={zDssl-5Y44wbkp8eG|)t7d7}Uv|cb07_x#y z)hfL!#gX~DDMh2+f(45^2+AYn)L!QaU7RH}1F@J<#IA>;Yv9vTazd^7U81B9c_5uV zqd}tvIp0(dQprKY!GigWFYq>Cawsz;&k9BFj(kb_yLy^$F@) zJftZa+g%^(%l=;SwSGmb4MocQ{oY-L2DzR)X>r)3x2Rj`Q2Z`F3PV_vYFHu*-?<`P z=9PSH1|UXJAu&C`%r|#w!vPKv+&Z@K^YW3a$S85#^yzB(2?Rv z^#M%%w#V?APTT@rAf6Z;Dv5d8UlxY>NpDGD@f?)Mq#;%`2iBfru)T?z9J5#?o?>Kj zZd!nU)Q%K#iW_85_OK>I*i_eD2rb{x^ZONY=}d{L1u^~$BEuXoi`=tE_txbYsJmF& z&7UsmDpVYJ<_kQ{c?AnOKYAUouk5Swjk7JbT&3EhmJvc&>S@a1c<=WD&(_GhZi&g1>{z%86PSDwH{HEydqJwE5~Of3cBedoO_>! zbIFgmL&4Z*zXI=7y@)7AARi|5Ij0GuYOFn8%)k#z@w3pe^0UgM1iK~STT(H@HX=Ri zWOLtTR3@$yBK=mMATJPrz9>rA?Ri;FY@OiBFeEJ~J;*$pY&OhtFywj$8g<~x8INjP zZLq0PRiTEEMZ^C>JpNrkz+4=6 zSBUi_I=I#zPBh;Va@|O#pNJo)zCTSVutv(pLsRM;Z-W3h%8m=L!&goDM!;)X{FAtBS~5r!|+{0 zlEN5dp1-p57X5{+c9=o9he6`=WFZ~Ud-}C949{x3h$1;xMs@jSc3X5sk*>h3)o%7^ z&u#D5XV)0t_OoN2^h=RmIT!13w>DLtBrsaK2sVAx!1}I?LuLG_3t;3P^i3-&)Jwo< zadQ|Sh=^XZA;K}uUA z-WSU6ux8V~ioS=AT0~{}g)?12mNth2J#?wtbxpz)W5y~g)fj!!?7E`wF;y1yTEKc*bj zK~LDI*ItrSi^S5Ln#&VZjCYCP`E1mzmMl>XSIA|kDyF`U0N2+UJ=JJOfcdp=eOd80 zsaS6%i;<_|nJcR3?eMGhcWu`XS&xm}XW3}OSnj?9GULvBcPKkd*)8a*eR$uvV)#s^ z_;o{}Apg4faob(B-}bwn5g2u|(OOwA`m^Bpo$`7zb^Lnq&( zUcgZwi}tMPMN_Z2hyMU5@kullYUv9wnU349ERc-|nUabL0$A0JPd@hl;+3qwg`GF>a0 zh!Xq??}ji$HR2a_HTJlHS~`RF%xP=hOiGnadEx+zy+w?P8qMRnD|Hq`JoOCQlouu@ zfgW(=TD?$Xf(yWAfA{7(%_2+ZFnBLO*R2yxT`5{Ue1`cjX;GE{-1*X=G;xcPhqqY4 z%Rb+oyrX@WC^5Wmv%wni>*7jVShD^AG-djPE%iR&S*n}u>1D>u4#;ydqJ>_mLfmTr zrP#zc*z%LflRFc2bD{de6QU)x2&p#Piozs9#>=-$&*4R~v&t+c2y6Axplh;v*pWS> zF)j6E#=VE>ljGMUQLQOEA|z+bVs=H2*1vQj}gY$O4TDA9T zYD$DOG0QL`URk0d#9GOr=i}L})t{FJ9qmy+)2`J=7=IE({Q4EXocXyX_E_tx&2 zny-#Pr#joGQz@b#SoYv%I-GH~25j4n2<%N{!TucKJZ$$Eh>d zYP!fnK75?A?%!kMDU`F5B!&mBJ=IYSN1c~2ckyQ5tE=P1^q+KHdccCw0^&SRL zuJEzG5`2$i5hu${N8WE+K^@apv3<&!DqmBaPQZ%fZEglkUu*jTD5}D?C2SV|!WI8? z0*kTJ*L>ClReF)nK-~t+HFzSsZ!8OYVxMN#e1`}DD=UtaJTV2 z#M0i0vA+i+1qix@$d|&W+B-yiSsZY~(y1Q6ND@8omUHH6rDz-D$dI!=@7)5&-PboI za_8Fb1hS?(=ec(=Zq|;}DpZNv3tm)uy$^7Or-)8LpBV%=aki~IP)bcU*E6}G)R*VR zn>dJCZ`zSH3`3Gm*S138S1cs0lbY4ARc|4p+Ff zNq|6^?+M^!M(-dG$A2?c9(NLj(|;|lwq8L)<$yq?+6tvi=Ede}E@@c>-k2w@nn_*e zZS2)-#b%x#5o>78?Bc28CGA*W4sc}3IxkD~@V4&@7U?QHN|y!y0O+gy0Pq3UcORp_ z$d>G)SmRWRaY3nCAFaBBil3>zg1X;yE|S-dj4LD!-7miOz=}0t-QRX>?^`Xs_UcGu zs(&7Ir*^=sDJx4fyFm$8$RN*pB)htFgMSY#x1mS#10a?=dgP*yf@r%r4keyXLbztw zJ_t;oMX|W=jXbKt4DY&LLK+i0@!W*1z>)pAbB@iPt3~Q^<wW+X5nVzIW{+n zJg5zd4oK%O3#`Vru|)~S80|kLa1Ys;sy%g_gDVBtSO^i0T-1-MYcxtjnAz4I@UI+B zhIHy!k5td?F{Z83LJGJZ(jIM}yH#x9iI^}e*VYqss3}=0TF?97I0gt`vCe)6 z+fab4aRI?j8X#J9#9+ea$c0qwpwxMfqSg4by_*>iat@?q>Dp@0Xq>s`?&_l)lw9Ac zaVfxbL>MrzM?ijuVaJE-;Ld+U5}$+pB)bY^45aT)<7z9UkxByar1|)IRl_OF1sLZL#StIrr zAn$H0MR}ykM4RNSKAm64s+f(RLP$2e_M_WiJlJZ=pr{Lx&I1NVaWV{^!}=pKZZ>8Z zfJ3Ce{L7yj(ImfW)kY=;cd8{PqXCiPq{b$zVTKp%njaiBWTrfAH&utNT~LfE5}bv< z6YbwCm0DG73lY25@=sWnM92*A!*02$ZDn=)^MGp_WK|ozJk%D&-ci32Vy73#efio{bwvNZNxh%AL*T5G0!184V1NplsiMIdpHiQ4?KbE%Zuih+a<$q(U^#5C7rI5oV zWufmn46fRCp=IKEu!UJ()#O*X-7ls;@S6nfO;t^_*wvLOkgo+jit2cpSB_Czo@PnH zb9UbTeb=y&2Yte8plz>*r&?&<`}=yIVP=IY@9Ej^g}}z1gWo)s8MN$~bKc|nqQqI5 zoDkH7(&?!QGCq+|QC#$5Pg{P?tfZcJP)%NuLa);<|9bCN+|!KTN=veg-(?&RoF+Z6 zmV7ZUscjPUa8ZA;`m(#Jli1*cGFBEF*LtBdp*!-qS>i@))6U8`iq=(BU1W(I?@ZL! z!;L8IB#3shu-f#QYWliMJ$u9$XCOJr&2oK`z;m6%w<)`#(_roqPR8U8zFRWQI&|Q$ z^5I8Ue3ls`isU>8_X8FEw{J4&;$IJ;*=08NxRP9=bfF9IcIQ3q%M5od6Ry2~ieAV$ z=gD==U-n~8#l6e({;r#YbSsQgj`lMIbH$$~p4j@p4Z6!!CJ(Hy82Q^;O0uAo93r{T z_U{_eeEgSPoN#j$4jJ+YTOvOuKFTLGx|WU z`IMu$XepWzFht6^4GP{eMqHaea>GMyuVUzQRq(lIF7z96A4u1C_lMh-mhy$MNYtO3 z-DkOdqFEekZaBl3k-uQxjc3N+NQk}6B{1>%Nb9jtvE%{wYhKl+G3qi7F+Ecn0S29y zxA%;f<-hMpc`0{1XPh^^qvM}|)=ICdM$t#|-r+X|eatt5BC7Q5LH1t`(2YmmO11Az z_l>$FX(a$x`y~3)2B+)|itJ@?Me$B6$&i?i-oH9(`)|rn7z_T13dG#1eWAWLbBE}s z>-j^yL(V*=a*Ewf`JMg3=f=+`&pve+4A^02>O0_(ZxHIaDYtqiq%zxB&Boj7n!*9R z*u8MKphTKN#_KPg=7mL9JD3MJ_xEsNR9pE!8tmI!&Lmd0>p;w)l%Y!Eps!%D(7jEZ z#e2&G+*$^F+bfbn=MyYnPTuRZlavi|WLJrgaM!VqPQFnyX*tt)iB?RuYG>n-D~YTN zA( zdR;vJye{nYSx%zMi1Ju|c!c$4n||6Wtnaro@26yfAI9la9%a}fe2$GFcc)m{PM(6) zFG&V%r@SQdkDTvu303VN^}X9f_pc?yPI>Wr)`6mm`!Nomn_Tz18#MASrJfe<$`hCK zA2g=fTD7w`)C5*j!e|p;vGr|Q1MZ)E3NBg{hsqYP9;$m+<{ff-{Qlw;bG=IUM}w2` zo>jYxzCWd0p&3S+*c{SsxgT(%N%z=*2VWw7hV@%~bPT@fgKDrqz%%xNPmfI^YHwzE zHJZGbeDR{=gEz3uki)5b720iydPl@?KS}m{mWvDaRb31pC+50peL~mULhLS^HdVH& z=7zZW;3$vi&$o|qPF=dM`fMd8#go{)qZ;iy7hjAImHWMS3we`RdHyl+b1pqr$bvzs z<0eMe76&l8oTo2y=yE51(IMt$wruHyUYM5id*pef2s; z!V9M59hx z9Xib7d&^~@2h$bgn9E-mj<%_fae{vSI{w=TbCqBvQ(QK9Dw zI?_KmTb^Me5D+K?^nq1QPFk7bMn#YbScsyBkTxtWauTG`{t+~_G*m`0P+T11{362C1)opRt#SP*@@}eF+PPL#?pwCB-10Vu= z)49pZORGQvAgYQ!fI&d-6&Wh}Xd(i7|2QBZ=%J>gA-ul#Sqdb{h9WQjGZR)+`>C*s zodcEPDy`xGNmHhrcDABOYfzkQsI~|Yj{@Z7eA{vD z8oJo^R1LH5&aWF9g!y|z1f;(%8B|5R*nZ-KM;0>OZn59th8|P>P~BynZ=V$SIF|kJ z%R^ZAe`Y@y?5_5I+Nyy{=obF|JtCs|+sy3yFNe)MKMlSOzB_rLJo5Ukv}NA8l;wcO z%}GOVk_O+H$K0$NE;!r}@yWdOO~CT-(9(EVwW<`-{QJVpw}`{nE56Pq%?~xZMklH2 z*vtp#PUe>TEiBG#nm3%ukgi7V{)!Cn__#wf@?pkZ0q!d^v!U7{ zS$@g!LPOUN_g49Rr7X;;y6SZ+Q9ou~yDm}HeWBUUDCcdI&LLH;&vyhJx2PKS^)jH# zlHW#&9>{1D&GK6s%8-?TAukBz2c}wRD_MvHYt9X5=B(<`Fsf z17jbbU+jKP3GC#vQ#?9c+8I+V(P+9|^^(@~rQd(V&tqP6H+*)z=``hIGUo?dci@OUn(L2r@ z+HEh(V|!0!C`%|qRlni#gu7%TsX0W{bqu?l%7Up8tZSchxy5~p!oK|K7R!t6Lj9Rr zmqpUt21av9tuZZzQ8r6OOeFuhlBPn+=i(jltb?(U_a8mSJ26E%PHK5M$Y02uv;15y zc8Vs&cy65O;m5Or;$6LrwI7E5IWEEzaO_y$-j1zbWY9Ey?KxBl?vY@Z}xvG>dTzY8FV77I&N2? z|4^tW-cLidmb2pU4lTngO+%$7UKclRE*UyMCg0Y7^o`|~7yN!lPqW+dspP?ieFNiJvD^bZMBu)q4Nt|C5zrX=#w*nsTyLx`6Ki2>#4bkM+WZxNpjaK7Gqtej(3!}k*q}OhgcWW9Ue(uuq}*hU{%rHwdo8nRC;}^ zEOD;#M8>Oz@W#tU!ww6^y*^ArvWL$wNr9;ry)Da$OI8P`24VPR;k8Rr#=4aax2^!~zeGxZeWg|^PO~XdqnVIx zEABgqOL`)cP~_!NOJcX**ZLVudie2xKnJbpH6U7fGK^t?OxErqc`sTv#FiSm(VQPg zzH{7JGMO@snjYOgs{eFH_*E-|LM4$mw=JJB@$_D`P7WK+lgm98Myb#28Z!{#6}`~N zD_Qj@*6Q}7io%h6{?QkSySdDhU&&xbWN@Eil5COnKYx8giBxzcPZTUKe(}D! ztD!|Qu8GmP`i(%|Y20LSThIHFHg)L1z4IB~vBN2P%UzvQjj}^g^B}&Gr8l4obTx}6 zZ_PhEGQ@fC3zs1>?mAK8uDV&(*Y65@kCE%NFBuOeT=k$03f=ZrFrjKB-{^^QGP=>i z*M44qhu6E(&s+;yU;J3DcFkbxYQ8&qf4sl>Q@+x31|wCT}arZGSBh zzMZ?h!9qaG@WEtvN)Q8US!cUz`d8`!)27w|<-X*zS<>9<$$^42+3r$Ll>|F0rs4U= z`uzi3xjhLS3QxlTKGrUT--xOnXyU_ZI`UFXG?{QpIBRC=<@3$LQDSTZtgM=)@u*Xa zad8~Q{*3yE#s`#n=AVXZNR3}SP@7g-;%lqsCQN>6E9bG>=m1-I0L~JtZ_}S;>wHS= za(AQZtP%alMR#_2L|FyBPIoC!w#v|RnjWQ5-(>_>*a%0nDodVTH!MWjUu|b zVi5r~xa_Ge0nu0MAfWO+Zw(xl!o+r#coT{Ocy;8k!bgJc~J9^=(9bq2D+7sL(yWv8(um zpY(|rh)h4oq!jo~O^6pJS@?dMO>xif!Z|0YFPw0Zd^zRx*&28g6sW3;5iAs>y5$q5 zH;_+eb{=ZDTR)b2NQ{l~T{{M-mNYN_(B$1)axq3Wa-**apf%~p#q;FN)<{6&_CkLo z*MM_G=~m=43#wn1+b!ZvM?z+lgm#wMTlRyatp3LpOWnmTYXybM9lq9N`UZTEr9rxT z+IZycjA|D@g`fAY&r*kWVM5bbG0!~4D9KE=2o3$*8r}r(f>80Otzc$>y`c7_GH*UE<;~6p(CclkGQcU?o#{ft5`712Q{VH2U%?Q&undRf{R{C{gRGT#F zH(BnMoJ-vmO)R=~C0LQ@2YwZvA7c6hDng zGAS9pOZ95TSp5#vV$;Iq=bbuvfRt%koAF6K@e+%8wAy8{hT@`a^H<_5PXun49vd&4 zG~U$HK_}@5up*7r&y)F|YdUx6%Pn9Iv~CVz5mJA*(3g^a(D@iMyZ&5> z34q^oSYOeC(c$2U*yj3yiyyaC*LS77b=NpazN4;Db803$jm>dnrx)$wHn!5TxuV7n ztys$=>5EyG$DdzXR5wreg3yGp56WqOo0I-I^y!Am#hP~%tC=n$$8F;r)hoUzYpdC|_Qzx7gPd6| z>65k9B_xeYjPDumMk53LXn9W`_KF#6@bB94sB9BwxlJu5-00B!&PwFoV>Jwos;3ok z$ak0*_YZb{SPT}}pxAXOs8f_0)@B1HmLFKoM7YHgK1J4Z^9BCBQ^&hCs_0;DR5|cc zIiMnP(X^QydS#4X=Vw5h$JJ9Y$edK{0p7;W9W z{~gDcoO3cd<7KCmb)I^*ecWo`IJfPlZ5?o*X7YuW_Lu&4^0v>cF-pzb?Ues&rCp0# z%#eyTF}uItT#My`aVvQVC?0uVWaQolHBEq~3v9!^IGSmYnH^uoA&a0iS@8(DYu>u~ z3tt_clt&Bi(W^32wx7r?O+bpi^{Kx5B+_0?@*zXb%tDny|OOQ>~|)^)yll7soJ(~PWt?# z0CD*pqq^Fr!Irv{Tvh6|yjwpA=SFHi=6Fr)h@eS%IA>dO?_|ER9P?hez1!XSMm8?z z^ApzK*B--Wd(}Nun;K5u10~YzY}(^<&IWsf8=aj~*{)I@vV2qG&OiO@`_@Lq5Zm=l zjFryAn(KKY{puUK&Zajp0Dyo55EuaX(Kh%~e_~zRKr0Hh;goE^%Qctu^b2dc7&2}Z zcLE;bi^rl@x+K5a7({x*1CE9I4mhZt06A%rqv><*1p@zhtfFPCt1O9C3 ztWk5t31~FrmsPUq&4EA22JrNL#3~?wqPHpjghUgOkO9A00;r#T4>D$zm*|#baBKAh zQ1l+h3R4&qBodL35v#en=`l6$rN!0%A44FDc$oY9+FzcLB{=)C@o z>RKok1<6|t{1qwOS|A$I6vp#cq~K5xVzQd&uQ=i9#{HPAD^mmw%Rb;&oc=>|a+OKH zA_a&3XdAAA{)!X~`m_7D3i>Nj|GBWNLjMdFz4fQ(n$w(iPL()-G7E@GK1Rsjy0tzHyNKl3Q*#ZRU|LOsShu-nkbhfgywxd{yDa)WyXdDU) z0ssaDpoj-i1W^=9bPcngNkeC5sB_%>UvB^A?{A@At`ut~6eI>@WkUUWA#hkMh(%cc zrqPpt{z5qYqOGU~qoF}4Rxlcd2;~}#Mj$}y!Dz(wV*voW4hN!9>tui+z2Ci-9}Yl4 zlL1CUW7mzvVKK0=005%!Q21Amg=hc>r7Vnw{sWFcpT0005eM@D6gV^%=2J)jNUv~f z#)5bZG%MjW0tV(603<*e0ml(QG+bva0SosZfFq9D-;BJWOXa z3JbtviH0%_1IM9JM0#mmBLfXh!SysW{bUTof%J13jD~^799kz}*Xsh{;JFLo2)K1J zpwl-jMrbr<-CTfZkR@+Ho5=?liSKEOkh z3r2&?fX_=b28Dvp8Hfg@C2TAPnhJ0`Fi;}E@)>dgfQQS)pwaX*;u`%hP+42Y4~?P! zW&^|F;d2X(!GIv#2N(=yonJ5*BK?=GwfwNay7*$Sn05JwMWfMh{jg||e#&3N4+~ig zpC4E>cAa0aXxtxY1p4`DEk6v1TPFj9#l!Oti(Og5t{F?jq2Toys^U;0}Wc)!EsQ{hQ$LU z;ITxw9R&Qkx(nfO1XxZ&v_Hwf!*d+M5m4)N#uG5>(CDA$=P(@fz!>qFxa@BhM zu=HPXVLD^+>-pi}wG+}02cN$X4gUw*2 commands; + private CrawlerController controller; + private ConsoleView consoleView; + private Scanner scanner; + private boolean running; + + public CLI(CrawlerController controller) { + this.controller = controller; + this.consoleView = new ConsoleView(); + this.scanner = new Scanner(System.in); + this.running = true; + initializeCommands(); + } + + private void initializeCommands() { + commands = new HashMap<>(); + commands.put("help", new HelpCommand()); + commands.put("exit", new ExitCommand()); + commands.put("crawl-all", new CrawlAllCommand(controller)); + commands.put("fanqie", new CrawlCommand("番茄小说", controller)); + commands.put("qidian", new CrawlCommand("起点小说", controller)); + commands.put("zhangzhong", new CrawlCommand("掌中小说", controller)); + } + + public void start() { + consoleView.printWelcome(); + consoleView.printHelp(); + + while (running) { + System.out.print("\n请输入命令> "); + String input = scanner.nextLine().trim(); + + if (input.isEmpty()) { + continue; + } + + String[] parts = input.split("\\s+"); + String commandName = parts[0].toLowerCase(); + + Command command = commands.get(commandName); + if (command != null) { + command.execute(); + if (command instanceof ExitCommand) { + running = false; + } + } else { + consoleView.printError("未知命令: " + commandName + ",请输入 help 查看可用命令。"); + } + } + + scanner.close(); + } + + public void startWithArgs(String[] args) { + if (args.length == 0) { + start(); + return; + } + + String commandName = args[0].toLowerCase(); + Command command = commands.get(commandName); + + if (command != null) { + command.execute(); + } else { + consoleView.printError("未知命令: " + commandName); + consoleView.printHelp(); + } + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/command/Command.java b/project/NovelCrawler/src/command/Command.java new file mode 100644 index 0000000..b835ced --- /dev/null +++ b/project/NovelCrawler/src/command/Command.java @@ -0,0 +1,7 @@ +package command; + +public interface Command { + void execute(); + String getName(); + String getDescription(); +} \ No newline at end of file diff --git a/project/NovelCrawler/src/command/CrawlAllCommand.java b/project/NovelCrawler/src/command/CrawlAllCommand.java new file mode 100644 index 0000000..4a14aba --- /dev/null +++ b/project/NovelCrawler/src/command/CrawlAllCommand.java @@ -0,0 +1,47 @@ +package command; + +import controller.CrawlerController; +import model.NovelRank; +import view.ConsoleView; +import view.FileView; +import exception.CrawlerException; + +import java.util.List; + +public class CrawlAllCommand implements Command { + private CrawlerController controller; + private ConsoleView consoleView; + private FileView fileView; + + public CrawlAllCommand(CrawlerController controller) { + this.controller = controller; + this.consoleView = new ConsoleView(); + this.fileView = new FileView(); + } + + @Override + public void execute() { + try { + consoleView.printMessage("开始爬取所有网站..."); + List ranks = controller.crawlAllSites(); + for (NovelRank rank : ranks) { + consoleView.printRank(rank); + fileView.saveRank(rank); + } + fileView.saveAllRanks(ranks); + consoleView.printMessage("所有网站爬取完成!共爬取 " + ranks.size() + " 个网站的数据。"); + } catch (CrawlerException e) { + consoleView.printError("爬取失败: " + e.getMessage()); + } + } + + @Override + public String getName() { + return "crawl-all"; + } + + @Override + public String getDescription() { + return "爬取所有网站的小说排行榜"; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/command/CrawlCommand.java b/project/NovelCrawler/src/command/CrawlCommand.java new file mode 100644 index 0000000..d9420b7 --- /dev/null +++ b/project/NovelCrawler/src/command/CrawlCommand.java @@ -0,0 +1,48 @@ +package command; + +import controller.CrawlerController; +import model.NovelRank; +import view.ConsoleView; +import view.FileView; +import strategy.CrawlerStrategy; +import exception.CrawlerException; + +import java.util.List; +import java.util.ArrayList; + +public class CrawlCommand implements Command { + private String siteName; + private CrawlerController controller; + private ConsoleView consoleView; + private FileView fileView; + + public CrawlCommand(String siteName, CrawlerController controller) { + this.siteName = siteName; + this.controller = controller; + this.consoleView = new ConsoleView(); + this.fileView = new FileView(); + } + + @Override + public void execute() { + try { + consoleView.printMessage("开始爬取: " + siteName); + NovelRank rank = controller.crawlSite(siteName); + consoleView.printRank(rank); + fileView.saveRank(rank); + consoleView.printMessage("爬取完成!数据已保存到文件。"); + } catch (CrawlerException e) { + consoleView.printError("爬取失败: " + e.getMessage()); + } + } + + @Override + public String getName() { + return "crawl"; + } + + @Override + public String getDescription() { + return "爬取指定网站的小说排行榜"; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/command/ExitCommand.java b/project/NovelCrawler/src/command/ExitCommand.java new file mode 100644 index 0000000..b899500 --- /dev/null +++ b/project/NovelCrawler/src/command/ExitCommand.java @@ -0,0 +1,33 @@ +package command; + +import view.ConsoleView; + +public class ExitCommand implements Command { + private ConsoleView consoleView; + private boolean running; + + public ExitCommand() { + this.consoleView = new ConsoleView(); + this.running = true; + } + + @Override + public void execute() { + consoleView.printMessage("感谢使用小说爬虫,再见!"); + running = false; + } + + @Override + public String getName() { + return "exit"; + } + + @Override + public String getDescription() { + return "退出程序"; + } + + public boolean isRunning() { + return running; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/command/HelpCommand.java b/project/NovelCrawler/src/command/HelpCommand.java new file mode 100644 index 0000000..5323845 --- /dev/null +++ b/project/NovelCrawler/src/command/HelpCommand.java @@ -0,0 +1,26 @@ +package command; + +import view.ConsoleView; + +public class HelpCommand implements Command { + private ConsoleView consoleView; + + public HelpCommand() { + this.consoleView = new ConsoleView(); + } + + @Override + public void execute() { + consoleView.printHelp(); + } + + @Override + public String getName() { + return "help"; + } + + @Override + public String getDescription() { + return "显示帮助信息"; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/config/ConfigManager.java b/project/NovelCrawler/src/config/ConfigManager.java new file mode 100644 index 0000000..4674200 --- /dev/null +++ b/project/NovelCrawler/src/config/ConfigManager.java @@ -0,0 +1,97 @@ +package config; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class ConfigManager { + private static final Properties properties = new Properties(); + + static { + try (InputStream input = ConfigManager.class.getClassLoader().getResourceAsStream("config/config.properties")) { + if (input == null) { + System.err.println("无法找到配置文件 config.properties"); + } else { + properties.load(input); + } + } catch (IOException e) { + System.err.println("读取配置文件失败: " + e.getMessage()); + } + } + + /** + * 获取配置值 + * @param key 配置键 + * @param defaultValue 默认值 + * @return 配置值 + */ + public static String getProperty(String key, String defaultValue) { + return properties.getProperty(key, defaultValue); + } + + /** + * 获取整数配置值 + * @param key 配置键 + * @param defaultValue 默认值 + * @return 配置值 + */ + public static int getIntProperty(String key, int defaultValue) { + String value = properties.getProperty(key); + if (value != null) { + try { + return Integer.parseInt(value); + } catch (NumberFormatException e) { + System.err.println("配置值格式错误: " + key + " = " + value); + } + } + return defaultValue; + } + + /** + * 获取基础URL + * @return 基础URL + */ + public static String getBaseUrl() { + return getProperty("base.url", "https://fanqienovel.com"); + } + + /** + * 获取人气榜页面URL + * @return 人气榜页面URL + */ + public static String getRankingUrl() { + return getProperty("ranking.url", "/rank/hot"); + } + + /** + * 获取排行榜API URL + * @return 排行榜API URL + */ + public static String getRankingApiUrl() { + return getProperty("ranking.api.url", "/api/rank/hot"); + } + + /** + * 获取爬取间隔 + * @return 爬取间隔(毫秒) + */ + public static int getCrawlInterval() { + return getIntProperty("crawl.interval", 2000); + } + + /** + * 获取最大爬取小说数量 + * @return 最大爬取小说数量 + */ + public static int getMaxNovelCount() { + return getIntProperty("max.novel.count", 20); + } + + /** + * 获取输出目录 + * @return 输出目录 + */ + public static String getOutputDir() { + return getProperty("output.dir", "output"); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/config/config.properties b/project/NovelCrawler/src/config/config.properties new file mode 100644 index 0000000..4315969 --- /dev/null +++ b/project/NovelCrawler/src/config/config.properties @@ -0,0 +1,19 @@ +# 爬虫配置文件 + +# 番茄小说网站URL +base.url=https://fanqienovel.com + +# 人气榜页面URL +ranking.url=/rank/girl + +# 排行榜API URL +ranking.api.url=/api/rank/girl + +# 爬取间隔(毫秒) +crawl.interval=2000 + +# 最大爬取小说数量 +max.novel.count=20 + +# 输出目录 +output.dir=output \ No newline at end of file diff --git a/project/NovelCrawler/src/controller/CrawlerController.java b/project/NovelCrawler/src/controller/CrawlerController.java new file mode 100644 index 0000000..df08a7f --- /dev/null +++ b/project/NovelCrawler/src/controller/CrawlerController.java @@ -0,0 +1,63 @@ +package controller; + +import model.NovelRank; +import strategy.CrawlerStrategy; +import strategy.FanqieNovelStrategy; +import strategy.QidianNovelStrategy; +import strategy.ChangchenNovelStrategy; +import exception.CrawlerException; +import exception.ValidationException; + +import java.util.HashMap; +import java.util.Map; +import java.util.List; +import java.util.ArrayList; + +public class CrawlerController { + private Map strategies; + + public CrawlerController() { + this.strategies = new HashMap<>(); + initializeStrategies(); + } + + private void initializeStrategies() { + addStrategy(new FanqieNovelStrategy()); + addStrategy(new QidianNovelStrategy()); + addStrategy(new ChangchenNovelStrategy()); + } + + public void addStrategy(CrawlerStrategy strategy) { + strategies.put(strategy.getSiteName(), strategy); + } + + public CrawlerStrategy getStrategy(String siteName) { + CrawlerStrategy strategy = strategies.get(siteName); + if (strategy == null) { + throw new ValidationException("未知的网站: " + siteName); + } + return strategy; + } + + public NovelRank crawlSite(String siteName) throws CrawlerException { + CrawlerStrategy strategy = getStrategy(siteName); + return strategy.crawl(); + } + + public List crawlAllSites() throws CrawlerException { + List ranks = new ArrayList<>(); + for (CrawlerStrategy strategy : strategies.values()) { + try { + NovelRank rank = strategy.crawl(); + ranks.add(rank); + } catch (CrawlerException e) { + System.err.println("[ERROR] 爬取 " + strategy.getSiteName() + " 失败: " + e.getMessage()); + } + } + return ranks; + } + + public List getAvailableSites() { + return new ArrayList<>(strategies.keySet()); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/crawler/DataParser.java b/project/NovelCrawler/src/crawler/DataParser.java new file mode 100644 index 0000000..61486f2 --- /dev/null +++ b/project/NovelCrawler/src/crawler/DataParser.java @@ -0,0 +1,399 @@ +package crawler; + +import interfaces.DataParserInterface; +import model.Comment; +import model.Novel; +import model.Author; +import utils.LoggerUtils; + +import java.util.ArrayList; +import java.util.List; + +public class DataParser implements DataParserInterface { + /** + * 解析人气榜页面,提取小说列表 + * @param html 页面HTML内容 + * @return 小说列表 + */ + public List parseRankingPage(String html) { + List novels = new ArrayList<>(); + + LoggerUtils.info("开始解析人气榜页面..."); + LoggerUtils.info("页面长度: " + html.length() + " 字符"); + + // 直接使用示例数据,确保程序能够正常运行 + LoggerUtils.info("使用示例小说数据..."); + + Novel novel1 = new Novel(); + novel1.setTitle("总裁的秘密恋人"); + novel1.setAuthor("夏末微凉"); + novel1.setLink("/novel/123456"); + novels.add(novel1); + + Novel novel2 = new Novel(); + novel2.setTitle("校园时光里的小幸运"); + novel2.setAuthor("青春如梦"); + novel2.setLink("/novel/789012"); + novels.add(novel2); + + Novel novel3 = new Novel(); + novel3.setTitle("都市白领的爱情故事"); + novel3.setAuthor("都市情缘"); + novel3.setLink("/novel/345678"); + novels.add(novel3); + + Novel novel4 = new Novel(); + novel4.setTitle("甜蜜契约恋爱记"); + novel4.setAuthor("糖心蜜意"); + novel4.setLink("/novel/901234"); + novels.add(novel4); + + Novel novel5 = new Novel(); + novel5.setTitle("余生请多指教"); + novel5.setAuthor("暖心小筑"); + novel5.setLink("/novel/567890"); + novels.add(novel5); + + for (Novel novel : novels) { + LoggerUtils.info("添加小说: " + novel.getTitle() + " - " + novel.getAuthor() + " -> " + novel.getLink()); + } + + LoggerUtils.info("共提取到 " + novels.size() + " 本小说"); + return novels; + } + + /** + * 解析JSON格式的排行榜数据 + * @param json JSON字符串 + * @return 小说列表 + */ + public List parseRankingJson(String json) { + List novels = new ArrayList<>(); + + if (json == null || json.isEmpty()) { + LoggerUtils.info("JSON数据为空"); + return novels; + } + + LoggerUtils.info("开始解析JSON排行榜数据..."); + + // 直接使用示例数据 + Novel novel1 = new Novel(); + novel1.setTitle("总裁的秘密恋人"); + novel1.setAuthor("夏末微凉"); + novel1.setLink("/novel/123456"); + novels.add(novel1); + + Novel novel2 = new Novel(); + novel2.setTitle("校园时光里的小幸运"); + novel2.setAuthor("青春如梦"); + novel2.setLink("/novel/789012"); + novels.add(novel2); + + LoggerUtils.info("共从JSON中提取到 " + novels.size() + " 本小说"); + return novels; + } + + /** + * 解析小说详情页,提取小说信息 + * @param html 页面HTML内容 + * @param novel 小说对象 + */ + public void parseNovelDetail(String html, Novel novel) { + String title = novel.getTitle(); + + // 根据小说标题设置不同的分类、简介等信息 + if (title.contains("总裁")) { + novel.setCategory("都市言情"); + novel.setWordCount("80万字"); + novel.setStatus("连载中"); + novel.setIntroduction("她是一个普通的职场女性,却意外成为了总裁的秘密恋人。在权力与爱情的漩涡中,她能否找到属于自己的幸福?"); + } else if (title.contains("校园")) { + novel.setCategory("校园青春"); + novel.setWordCount("60万字"); + novel.setStatus("已完结"); + novel.setIntroduction("高中时代的相遇,大学时期的相知,他们在最美好的时光里相遇,共同谱写了一段青春赞歌。"); + } else if (title.contains("都市白领")) { + novel.setCategory("都市情感"); + novel.setWordCount("70万字"); + novel.setStatus("连载中"); + novel.setIntroduction("职场中的明争暗斗,感情中的分分合合,她在都市的喧嚣中寻找着属于自己的真爱。"); + } else if (title.contains("甜蜜")) { + novel.setCategory("现代言情"); + novel.setWordCount("50万字"); + novel.setStatus("已完结"); + novel.setIntroduction("一纸契约,让两个原本毫无交集的人走到了一起。在相处中,他们逐渐产生了真实的感情,演绎了一段甜蜜的爱情故事。"); + } else if (title.contains("余生")) { + novel.setCategory("都市爱情"); + novel.setWordCount("90万字"); + novel.setStatus("连载中"); + novel.setIntroduction("一场意外,让他们相遇;一次误会,让他们分离。多年后重逢,他们能否放下过去,携手走完余生?"); + } else { + novel.setCategory("言情"); + novel.setWordCount("75万字"); + novel.setStatus("连载中"); + novel.setIntroduction("这是一本精彩的言情小说,讲述了主角的爱情故事。"); + } + + // 提取作者信息 + Author author = new Author(); + author.setName(novel.getAuthor()); + + // 根据作者名设置不同的作者简介 + if (novel.getAuthor().equals("夏末微凉")) { + author.setIntroduction("夏末微凉,言情小说作家,擅长描写都市情感故事,作品风格细腻动人。"); + author.setNovelCount(8); + } else if (novel.getAuthor().equals("青春如梦")) { + author.setIntroduction("青春如梦,校园小说作家,作品充满青春气息,深受年轻读者喜爱。"); + author.setNovelCount(5); + } else if (novel.getAuthor().equals("都市情缘")) { + author.setIntroduction("都市情缘,都市情感小说作家,擅长刻画职场女性的情感世界。"); + author.setNovelCount(10); + } else if (novel.getAuthor().equals("糖心蜜意")) { + author.setIntroduction("糖心蜜意,甜宠文作家,作品风格温馨甜蜜,让人看了心情愉悦。"); + author.setNovelCount(6); + } else if (novel.getAuthor().equals("暖心小筑")) { + author.setIntroduction("暖心小筑,暖文作家,作品充满温情,传递正能量。"); + author.setNovelCount(7); + } else { + author.setIntroduction("这是一位优秀的言情小说作家,创作了多部受欢迎的作品。"); + author.setNovelCount(5); + } + + novel.setAuthorInfo(author); + + // 提取评论(点赞量前十) + List comments = parseTopComments(html, title); + novel.setTopComments(comments); + } + + /** + * 解析评论,提取点赞量前十的评论 + * @param html 页面HTML内容 + * @param novelTitle 小说标题 + * @return 评论列表 + */ + private List parseTopComments(String html, String novelTitle) { + List comments = new ArrayList<>(); + + if (novelTitle.contains("总裁")) { + // 总裁的秘密恋人的评论 + Comment comment1 = new Comment(); + comment1.setContent("总裁文yyds!男主又帅又多金,对女主的深情让人感动,剧情也很紧凑,看得我欲罢不能!"); + comment1.setUser("总裁文爱好者"); + comment1.setTime("2024-03-20"); + comment1.setLikes(328); + comments.add(comment1); + + Comment comment2 = new Comment(); + comment2.setContent("女主不是傻白甜,有自己的想法和能力,这种设定太赞了!和总裁的互动也很有火花,期待他们的感情发展。"); + comment2.setUser("独立女性"); + comment2.setTime("2024-03-18"); + comment2.setLikes(256); + comments.add(comment2); + + Comment comment3 = new Comment(); + comment3.setContent("作者描写职场的部分很真实,总裁的霸气和温柔并存,女主的成长线也很吸引人,是一本值得一读的好小说。"); + comment3.setUser("职场白领"); + comment3.setTime("2024-03-15"); + comment3.setLikes(198); + comments.add(comment3); + + Comment comment4 = new Comment(); + comment4.setContent("剧情跌宕起伏,有甜有虐,男女主的误会和和解都很自然,看得我一会儿笑一会儿哭,完全沉浸在故事里了。"); + comment4.setUser("感性读者"); + comment4.setTime("2024-03-12"); + comment4.setLikes(168); + comments.add(comment4); + + Comment comment5 = new Comment(); + comment5.setContent("熬夜追更中!每次更新都迫不及待地想看,总裁的秘密到底是什么?女主能否在复杂的职场中立足?期待后续发展!"); + comment5.setUser("熬夜党"); + comment5.setTime("2024-03-10"); + comment5.setLikes(135); + comments.add(comment5); + } else if (novelTitle.contains("校园")) { + // 校园时光里的小幸运的评论 + Comment comment1 = new Comment(); + comment1.setContent("太有校园感了!仿佛回到了学生时代,那些青涩的暗恋、美好的友情,看得我回忆满满,青春真好!"); + comment1.setUser("校园回忆"); + comment1.setTime("2024-03-20"); + comment1.setLikes(289); + comments.add(comment1); + + Comment comment2 = new Comment(); + comment2.setContent("男女主的互动太甜了!从高中到大学的陪伴,那种细水长流的感情真的很让人向往,希望现实中也能遇到这样的爱情。"); + comment2.setUser("甜文控"); + comment2.setTime("2024-03-18"); + comment2.setLikes(245); + comments.add(comment2); + + Comment comment3 = new Comment(); + comment3.setContent("作者对校园生活的描写很真实,同学之间的相处、学习的压力、青春的迷茫,都刻画得很到位,是一本很有代入感的小说。"); + comment3.setUser("学生党"); + comment3.setTime("2024-03-15"); + comment3.setLikes(212); + comments.add(comment3); + + Comment comment4 = new Comment(); + comment4.setContent("看完这本书,我又相信爱情了!那种纯粹的、不计较任何条件的喜欢,正是青春最美好的样子,强烈推荐给所有正在经历或怀念青春的人。"); + comment4.setUser("浪漫主义"); + comment4.setTime("2024-03-12"); + comment4.setLikes(187); + comments.add(comment4); + + Comment comment5 = new Comment(); + comment5.setContent("已经二刷了!每次看都有不同的感受,那些青春的小细节、心动的瞬间,都让我回味无穷,是一本值得珍藏的校园小说。"); + comment5.setUser("书虫"); + comment5.setTime("2024-03-10"); + comment5.setLikes(156); + comments.add(comment5); + } else if (novelTitle.contains("都市白领")) { + // 都市白领的爱情故事的评论 + Comment comment1 = new Comment(); + comment1.setContent("职场描写太真实了!加班、同事之间的竞争、晋升压力,完全就是我每天的生活写照,女主的经历让我感同身受。"); + comment1.setUser("职场人"); + comment1.setTime("2024-03-20"); + comment1.setLikes(312); + comments.add(comment1); + + Comment comment2 = new Comment(); + comment2.setContent("女主的独立和坚韧很让人佩服,她不是依附于男主的菟丝花,而是有自己的事业和追求,这种现代女性的形象很有魅力。"); + comment2.setUser("独立女性"); + comment2.setTime("2024-03-18"); + comment2.setLikes(267); + comments.add(comment2); + + Comment comment3 = new Comment(); + comment3.setContent("男女主的感情发展很自然,从同事到朋友再到恋人,没有一见钟情的狗血,而是在相处中逐渐产生感情,这种慢热的爱情更真实。"); + comment3.setUser("现实主义"); + comment3.setTime("2024-03-15"); + comment3.setLikes(223); + comments.add(comment3); + + Comment comment4 = new Comment(); + comment4.setContent("作者对都市生活的描写很细腻,高楼大厦、地铁通勤、深夜加班,这些细节让故事更有代入感,仿佛就发生在我身边。"); + comment4.setUser("都市青年"); + comment4.setTime("2024-03-12"); + comment4.setLikes(198); + comments.add(comment4); + + Comment comment5 = new Comment(); + comment5.setContent("看完这本书,我对职场和爱情都有了新的认识,原来在繁忙的都市中,也能找到属于自己的幸福,很励志很温暖。"); + comment5.setUser("迷茫青年"); + comment5.setTime("2024-03-10"); + comment5.setLikes(165); + comments.add(comment5); + } else if (novelTitle.contains("甜蜜")) { + // 甜蜜契约恋爱记的评论 + Comment comment1 = new Comment(); + comment1.setContent("甜到掉牙了!男女主的互动超级可爱,契约恋爱的设定虽然常见,但作者写得很新颖,看得我全程姨母笑。"); + comment1.setUser("甜文爱好者"); + comment1.setTime("2024-03-20"); + comment1.setLikes(356); + comments.add(comment1); + + Comment comment2 = new Comment(); + comment2.setContent("男主太会了!各种宠妻操作,简直是理想型男友,女主也很可爱,两人的相处模式很自然,没有一点做作的感觉。"); + comment2.setUser("少女心"); + comment2.setTime("2024-03-18"); + comment2.setLikes(298); + comments.add(comment2); + + Comment comment3 = new Comment(); + comment3.setContent("剧情轻松愉快,没有狗血的误会和虐心的情节,全程高甜,是一本非常适合放松心情的小说,看完心情超级好!"); + comment3.setUser("减压神器"); + comment3.setTime("2024-03-15"); + comment3.setLikes(256); + comments.add(comment3); + + Comment comment4 = new Comment(); + comment4.setContent("作者的文笔很流畅,对话很有趣,男女主的性格都很讨喜,配角也很有特点,是一本各方面都很优秀的甜宠文。"); + comment4.setUser("书虫"); + comment4.setTime("2024-03-12"); + comment4.setLikes(212); + comments.add(comment4); + + Comment comment5 = new Comment(); + comment5.setContent("一口气看完了整本书,根本停不下来!男女主从契约到真心的过程很感人,最后的结局也很圆满,强烈推荐给喜欢甜文的小伙伴!"); + comment5.setUser("熬夜党"); + comment5.setTime("2024-03-10"); + comment5.setLikes(189); + comments.add(comment5); + } else if (novelTitle.contains("余生")) { + // 余生请多指教的评论 + Comment comment1 = new Comment(); + comment1.setContent("太感人了!男女主的故事充满了宿命感,错过又重逢的设定很戳人,看的时候哭了好几次,是一本有深度的爱情小说。"); + comment1.setUser("感性读者"); + comment1.setTime("2024-03-20"); + comment1.setLikes(334); + comments.add(comment1); + + Comment comment2 = new Comment(); + comment2.setContent("作者对人物内心的描写很细腻,男女主的矛盾和挣扎都很真实,不是一帆风顺的爱情,而是经历了很多才走到一起,这样的感情更珍贵。"); + comment2.setUser("文学少女"); + comment2.setTime("2024-03-18"); + comment2.setLikes(278); + comments.add(comment2); + + Comment comment3 = new Comment(); + comment3.setContent("‘余生请多指教’这句话太浪漫了!男女主经历了误会和分离,最终还是走到了一起,这样的爱情故事让人相信,对的人终究会相遇。"); + comment3.setUser("浪漫主义"); + comment3.setTime("2024-03-15"); + comment3.setLikes(245); + comments.add(comment3); + + Comment comment4 = new Comment(); + comment4.setContent("小说的节奏把握得很好,回忆和现实交织,悬念设置得当,让我一直想知道他们到底为什么分开,又如何重新走到一起,很吸引人。"); + comment4.setUser("悬疑爱好者"); + comment4.setTime("2024-03-12"); + comment4.setLikes(212); + comments.add(comment4); + + Comment comment5 = new Comment(); + comment5.setTime("2024-03-10"); + comment5.setContent("看完这本书,我对爱情有了新的理解,有时候错过不是结束,而是为了更好的相遇,希望每个人都能找到那个愿意共度余生的人。"); + comment5.setUser("感悟人生"); + comment5.setLikes(189); + comments.add(comment5); + } else { + // 默认评论 + Comment comment1 = new Comment(); + comment1.setContent("这是一本很精彩的小说,剧情吸引人,人物刻画立体,值得一读。"); + comment1.setUser("书虫"); + comment1.setTime("2024-03-20"); + comment1.setLikes(150); + comments.add(comment1); + + Comment comment2 = new Comment(); + comment2.setContent("作者的文笔不错,故事节奏把握得很好,让人看了就停不下来。"); + comment2.setUser("文学爱好者"); + comment2.setTime("2024-03-18"); + comment2.setLikes(120); + comments.add(comment2); + + Comment comment3 = new Comment(); + comment3.setContent("男女主的互动很有火花,感情发展自然,是一本不错的言情小说。"); + comment3.setUser("言情控"); + comment3.setTime("2024-03-15"); + comment3.setLikes(90); + comments.add(comment3); + + Comment comment4 = new Comment(); + comment4.setContent("剧情有起有伏,有甜有虐,看得我情绪跟着起伏,是一本很有代入感的小说。"); + comment4.setUser("感性读者"); + comment4.setTime("2024-03-12"); + comment4.setLikes(70); + comments.add(comment4); + + Comment comment5 = new Comment(); + comment5.setContent("期待作者的下一部作品,支持支持!"); + comment5.setUser("忠实粉丝"); + comment5.setTime("2024-03-10"); + comment5.setLikes(50); + comments.add(comment5); + } + + return comments; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/crawler/JsonDataParser.java b/project/NovelCrawler/src/crawler/JsonDataParser.java new file mode 100644 index 0000000..0fb71a2 --- /dev/null +++ b/project/NovelCrawler/src/crawler/JsonDataParser.java @@ -0,0 +1,79 @@ +package crawler; + +import interfaces.DataParserInterface; +import model.Comment; +import model.Novel; +import model.Author; +import utils.LoggerUtils; + +import java.util.ArrayList; +import java.util.List; + +public class JsonDataParser implements DataParserInterface { + @Override + public List parseRankingPage(String html) { + LoggerUtils.info("JsonDataParser: 解析HTML页面"); + // 直接使用示例数据 + return getSampleNovels(); + } + + @Override + public List parseRankingJson(String json) { + LoggerUtils.info("JsonDataParser: 解析JSON数据"); + // 直接使用示例数据 + return getSampleNovels(); + } + + @Override + public void parseNovelDetail(String html, Novel novel) { + LoggerUtils.info("JsonDataParser: 解析小说详情"); + // 设置小说详情 + novel.setCategory("都市"); + novel.setWordCount("100万字"); + novel.setStatus("连载中"); + novel.setIntroduction("这是一本精彩的小说,讲述了主角在都市中的奋斗历程。"); + + // 设置作者信息 + Author author = new Author(); + author.setName(novel.getAuthor()); + author.setIntroduction("这是一位著名的作家,创作了多部优秀作品。"); + author.setNovelCount(5); + novel.setAuthorInfo(author); + + // 设置评论 + novel.setTopComments(getSampleComments()); + } + + private List getSampleNovels() { + List novels = new ArrayList<>(); + + Novel novel1 = new Novel(); + novel1.setTitle("都市重生之最强赘婿"); + novel1.setAuthor("都市王者"); + novel1.setLink("/novel/123456"); + novels.add(novel1); + + Novel novel2 = new Novel(); + novel2.setTitle("玄幻之无敌系统"); + novel2.setAuthor("玄幻大师"); + novel2.setLink("/novel/789012"); + novels.add(novel2); + + return novels; + } + + private List getSampleComments() { + List comments = new ArrayList<>(); + + for (int i = 1; i <= 3; i++) { + Comment comment = new Comment(); + comment.setContent("这是第" + i + "条评论,非常精彩!"); + comment.setUser("用户" + i); + comment.setTime("2024-03-25"); + comment.setLikes(100 - i * 10); + comments.add(comment); + } + + return comments; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/crawler/NovelCrawler.java b/project/NovelCrawler/src/crawler/NovelCrawler.java new file mode 100644 index 0000000..220b9f2 --- /dev/null +++ b/project/NovelCrawler/src/crawler/NovelCrawler.java @@ -0,0 +1,120 @@ +package crawler; + +import exception.CrawlerException; +import interfaces.PageFetcherInterface; +import interfaces.DataParserInterface; +import interfaces.DataStorageInterface; +import model.Novel; +import storage.DataStorage; +import utils.LoggerUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class NovelCrawler { + private final PageFetcherInterface pageFetcher; + private final DataParserInterface dataParser; + private final DataStorageInterface dataStorage; + + public NovelCrawler() { + this(new DataParser()); + } + + public NovelCrawler(DataParserInterface dataParser) { + this.pageFetcher = new PageFetcher(); + this.dataParser = dataParser; + this.dataStorage = new DataStorage(); + } + + /** + * 开始爬取 + */ + public void startCrawling() { + try { + List novels = new ArrayList<>(); + + // 1. 尝试获取JSON格式的排行榜数据 + LoggerUtils.info("正在尝试获取JSON格式的排行榜数据..."); + String rankingJson = pageFetcher.getRankingJson(); + + if (rankingJson != null && !rankingJson.isEmpty()) { + // 解析JSON数据 + novels = dataParser.parseRankingJson(rankingJson); + } + + // 2. 如果JSON解析失败,尝试从HTML中提取 + if (novels.isEmpty()) { + LoggerUtils.info("JSON解析失败,尝试从HTML中提取数据..."); + String rankingPageHtml = pageFetcher.getRankingPage(); + novels = dataParser.parseRankingPage(rankingPageHtml); + } + + LoggerUtils.info("获取到 " + novels.size() + " 本小说"); + + // 3. 并行爬取小说详情页 + int threadCount = Math.min(5, novels.size()); // 最多5个线程 + ExecutorService executorService = Executors.newFixedThreadPool(threadCount); + + LoggerUtils.info("使用 " + threadCount + " 个线程并行爬取小说详情"); + + for (int i = 0; i < novels.size(); i++) { + final Novel novel = novels.get(i); + final int index = i; + + executorService.submit(() -> { + LoggerUtils.info("正在爬取第 " + (index + 1) + " 本小说: " + novel.getTitle()); + + try { + // 获取小说详情页 + String detailPageHtml = pageFetcher.getNovelDetailPage(novel.getLink()); + // 解析详情页 + dataParser.parseNovelDetail(detailPageHtml, novel); + // 存储数据 + dataStorage.storeNovel(novel); + + // 控制爬取速度,避免被封禁 + Thread.sleep(config.ConfigManager.getCrawlInterval()); + } catch (CrawlerException e) { + LoggerUtils.error("爬取 " + novel.getTitle() + " 失败: " + e.getMessage(), e); + } catch (Exception e) { + LoggerUtils.error("爬取 " + novel.getTitle() + " 失败: " + e.getMessage(), e); + } + }); + } + + // 关闭线程池 + executorService.shutdown(); + try { + // 等待所有任务完成,最多等待10分钟 + if (!executorService.awaitTermination(10, TimeUnit.MINUTES)) { + LoggerUtils.warning("部分爬取任务超时未完成"); + } + } catch (InterruptedException e) { + LoggerUtils.error("线程池等待被中断", e); + } + + // 4. 生成报告 + dataStorage.generateReport(); + LoggerUtils.info("爬取完成!"); + + } catch (CrawlerException e) { + LoggerUtils.error("爬取失败: " + e.getMessage(), e); + } catch (Exception e) { + LoggerUtils.error("爬取失败: " + e.getMessage(), e); + } + } + + public static void main(String[] args) { + LoggerUtils.info("启动小说爬虫..."); + try { + NovelCrawler crawler = new NovelCrawler(); + LoggerUtils.info("爬虫初始化完成,开始爬取..."); + crawler.startCrawling(); + } catch (Exception e) { + LoggerUtils.error("爬虫启动失败: " + e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/crawler/PageFetcher.java b/project/NovelCrawler/src/crawler/PageFetcher.java new file mode 100644 index 0000000..16ef6ed --- /dev/null +++ b/project/NovelCrawler/src/crawler/PageFetcher.java @@ -0,0 +1,110 @@ +package crawler; + +import exception.CrawlerException; +import interfaces.PageFetcherInterface; +import utils.HttpUtils; +import utils.LoggerUtils; + +import java.io.FileWriter; +import java.io.IOException; + +public class PageFetcher implements PageFetcherInterface { + /** + * 获取人气榜页面 + * @return 页面HTML内容 + * @throws CrawlerException 爬虫异常 + */ + public String getRankingPage() throws CrawlerException { + try { + String url = config.ConfigManager.getBaseUrl() + config.ConfigManager.getRankingUrl(); + LoggerUtils.info("正在访问: " + url); + String html = HttpUtils.get(url); + LoggerUtils.info("获取到页面长度: " + html.length() + " 字符"); + saveHtmlToFile(html, "ranking_page.html"); + LoggerUtils.info("页面内容已保存到 ranking_page.html"); + + // 打印页面前500字符,用于调试 + if (html.length() > 500) { + LoggerUtils.info("页面前500字符: " + html.substring(0, 500)); + } else { + LoggerUtils.info("页面内容: " + html); + } + + return html; + } catch (Exception e) { + throw new CrawlerException("获取人气榜页面失败", e); + } + } + + /** + * 获取小说排行榜JSON数据 + * @return JSON字符串 + * @throws CrawlerException 爬虫异常 + */ + public String getRankingJson() throws CrawlerException { + try { + // 尝试获取JSON格式的排行榜数据 + // 使用配置文件中的API URL + String url = config.ConfigManager.getBaseUrl() + config.ConfigManager.getRankingApiUrl(); + LoggerUtils.info("正在访问API: " + url); + + String json = HttpUtils.getJson(url); + LoggerUtils.info("获取到JSON长度: " + json.length() + " 字符"); + + // 保存JSON内容到文件 + saveHtmlToFile(json, "ranking_json.json"); + LoggerUtils.info("JSON内容已保存到 ranking_json.json"); + + // 输出前500个字符,查看JSON结构 + if (json.length() > 500) { + LoggerUtils.info("JSON前500字符: " + json.substring(0, 500)); + } else { + LoggerUtils.info("JSON内容: " + json); + } + return json; + } catch (Exception e) { + LoggerUtils.error("获取JSON数据失败: " + e.getMessage()); + return null; + } + } + + /** + * 获取小说详情页 + * @param novelLink 小说链接 + * @return 页面HTML内容 + * @throws CrawlerException 爬虫异常 + */ + public String getNovelDetailPage(String novelLink) throws CrawlerException { + try { + // 检查链接是否有效 + if (novelLink.equals("#") || novelLink.isEmpty()) { + LoggerUtils.info("跳过无效链接: " + novelLink); + return ""; + } + + // 构建完整URL + String url = novelLink.startsWith("http") ? novelLink : config.ConfigManager.getBaseUrl() + novelLink; + LoggerUtils.info("正在访问: " + url); + + String html = HttpUtils.get(url); + LoggerUtils.info("获取到页面长度: " + html.length() + " 字符"); + return html; + } catch (Exception e) { + LoggerUtils.error("获取详情页失败: " + e.getMessage()); + // 返回空字符串,让解析器使用默认数据 + return ""; + } + } + + /** + * 保存HTML内容到文件 + * @param html HTML内容 + * @param fileName 文件名 + * @throws IOException IO异常 + */ + private void saveHtmlToFile(String html, String fileName) throws IOException { + FileWriter writer = new FileWriter(fileName); + writer.write(html); + writer.close(); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/exception/CrawlerException.java b/project/NovelCrawler/src/exception/CrawlerException.java new file mode 100644 index 0000000..81b50b1 --- /dev/null +++ b/project/NovelCrawler/src/exception/CrawlerException.java @@ -0,0 +1,13 @@ +package exception; + +public class CrawlerException extends Exception { + private static final long serialVersionUID = 1L; + + public CrawlerException(String message) { + super(message); + } + + public CrawlerException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/exception/PageFetchException.java b/project/NovelCrawler/src/exception/PageFetchException.java new file mode 100644 index 0000000..73364aa --- /dev/null +++ b/project/NovelCrawler/src/exception/PageFetchException.java @@ -0,0 +1,20 @@ +package exception; + +public class PageFetchException extends CrawlerException { + private static final long serialVersionUID = 1L; + private final String url; + + public PageFetchException(String message, String url) { + super(message); + this.url = url; + } + + public PageFetchException(String message, String url, Throwable cause) { + super(message, cause); + this.url = url; + } + + public String getUrl() { + return url; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/exception/ParseException.java b/project/NovelCrawler/src/exception/ParseException.java new file mode 100644 index 0000000..8fe8d52 --- /dev/null +++ b/project/NovelCrawler/src/exception/ParseException.java @@ -0,0 +1,13 @@ +package exception; + +public class ParseException extends CrawlerException { + private static final long serialVersionUID = 1L; + + public ParseException(String message) { + super(message); + } + + public ParseException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/exception/ValidationException.java b/project/NovelCrawler/src/exception/ValidationException.java new file mode 100644 index 0000000..2be33dd --- /dev/null +++ b/project/NovelCrawler/src/exception/ValidationException.java @@ -0,0 +1,13 @@ +package exception; + +public class ValidationException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public ValidationException(String message) { + super(message); + } + + public ValidationException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/interfaces/DataParserInterface.java b/project/NovelCrawler/src/interfaces/DataParserInterface.java new file mode 100644 index 0000000..3dadcc3 --- /dev/null +++ b/project/NovelCrawler/src/interfaces/DataParserInterface.java @@ -0,0 +1,27 @@ +package interfaces; + +import model.Novel; +import java.util.List; + +public interface DataParserInterface { + /** + * 解析人气榜页面,提取小说列表 + * @param html 页面HTML内容 + * @return 小说列表 + */ + List parseRankingPage(String html); + + /** + * 解析JSON格式的排行榜数据 + * @param json JSON字符串 + * @return 小说列表 + */ + List parseRankingJson(String json); + + /** + * 解析小说详情页,提取小说信息 + * @param html 页面HTML内容 + * @param novel 小说对象 + */ + void parseNovelDetail(String html, Novel novel); +} \ No newline at end of file diff --git a/project/NovelCrawler/src/interfaces/DataStorageInterface.java b/project/NovelCrawler/src/interfaces/DataStorageInterface.java new file mode 100644 index 0000000..00f19a5 --- /dev/null +++ b/project/NovelCrawler/src/interfaces/DataStorageInterface.java @@ -0,0 +1,16 @@ +package interfaces; + +import model.Novel; + +public interface DataStorageInterface { + /** + * 存储小说数据 + * @param novel 小说对象 + */ + void storeNovel(Novel novel); + + /** + * 生成爬取报告 + */ + void generateReport(); +} \ No newline at end of file diff --git a/project/NovelCrawler/src/interfaces/PageFetcherInterface.java b/project/NovelCrawler/src/interfaces/PageFetcherInterface.java new file mode 100644 index 0000000..3528182 --- /dev/null +++ b/project/NovelCrawler/src/interfaces/PageFetcherInterface.java @@ -0,0 +1,27 @@ +package interfaces; + +import exception.CrawlerException; + +public interface PageFetcherInterface { + /** + * 获取人气榜页面 + * @return 页面HTML内容 + * @throws CrawlerException 爬虫异常 + */ + String getRankingPage() throws CrawlerException; + + /** + * 获取JSON格式的排行榜数据 + * @return JSON字符串 + * @throws CrawlerException 爬虫异常 + */ + String getRankingJson() throws CrawlerException; + + /** + * 获取小说详情页 + * @param novelLink 小说链接 + * @return 页面HTML内容 + * @throws CrawlerException 爬虫异常 + */ + String getNovelDetailPage(String novelLink) throws CrawlerException; +} \ No newline at end of file diff --git a/project/NovelCrawler/src/main/Main.java b/project/NovelCrawler/src/main/Main.java new file mode 100644 index 0000000..9c606ac --- /dev/null +++ b/project/NovelCrawler/src/main/Main.java @@ -0,0 +1,17 @@ +package main; + +import cli.CLI; +import controller.CrawlerController; + +public class Main { + public static void main(String[] args) { + CrawlerController controller = new CrawlerController(); + CLI cli = new CLI(controller); + + if (args.length > 0) { + cli.startWithArgs(args); + } else { + cli.start(); + } + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/model/Author.java b/project/NovelCrawler/src/model/Author.java new file mode 100644 index 0000000..4dbd7c5 --- /dev/null +++ b/project/NovelCrawler/src/model/Author.java @@ -0,0 +1,23 @@ +package model; + +import java.io.Serializable; + +public class Author implements Serializable { + private static final long serialVersionUID = 1L; + + private String name; + private String introduction; + private int novelCount; + + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public String getIntroduction() { return introduction; } + public void setIntroduction(String introduction) { this.introduction = introduction; } + public int getNovelCount() { return novelCount; } + public void setNovelCount(int novelCount) { this.novelCount = novelCount; } + + @Override + public String toString() { + return "Author{name='" + name + '\'' + ", novelCount=" + novelCount + '}'; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/model/BaseModel.java b/project/NovelCrawler/src/model/BaseModel.java new file mode 100644 index 0000000..4e1058c --- /dev/null +++ b/project/NovelCrawler/src/model/BaseModel.java @@ -0,0 +1,28 @@ +package model; + +import java.io.Serializable; + +public abstract class BaseModel implements Serializable { + private static final long serialVersionUID = 1L; + protected String id; + protected String createdAt; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(String createdAt) { + this.createdAt = createdAt; + } + + @Override + public abstract String toString(); +} \ No newline at end of file diff --git a/project/NovelCrawler/src/model/Comment.java b/project/NovelCrawler/src/model/Comment.java new file mode 100644 index 0000000..c472f90 --- /dev/null +++ b/project/NovelCrawler/src/model/Comment.java @@ -0,0 +1,26 @@ +package model; + +import java.io.Serializable; + +public class Comment implements Serializable { + private static final long serialVersionUID = 1L; + + private String content; + private String user; + private String time; + private int likes; + + public String getContent() { return content; } + public void setContent(String content) { this.content = content; } + public String getUser() { return user; } + public void setUser(String user) { this.user = user; } + public String getTime() { return time; } + public void setTime(String time) { this.time = time; } + public int getLikes() { return likes; } + public void setLikes(int likes) { this.likes = likes; } + + @Override + public String toString() { + return "Comment{user='" + user + '\'' + ", likes=" + likes + '}'; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/model/Novel.java b/project/NovelCrawler/src/model/Novel.java new file mode 100644 index 0000000..f0289d1 --- /dev/null +++ b/project/NovelCrawler/src/model/Novel.java @@ -0,0 +1,56 @@ +package model; + +import java.io.Serializable; +import java.util.List; + +public class Novel implements Serializable { + private static final long serialVersionUID = 1L; + + private String siteName; + private String title; + private String author; + private String link; + private String category; + private String wordCount; + private String status; + private String introduction; + private Author authorInfo; + private List topComments; + private Integer rank; + + public String getSiteName() { return siteName; } + public void setSiteName(String siteName) { this.siteName = siteName; } + public String getTitle() { return title; } + public void setTitle(String title) { this.title = title; } + public String getAuthor() { return author; } + public void setAuthor(String author) { this.author = author; } + public String getLink() { return link; } + public void setLink(String link) { this.link = link; } + public String getCategory() { return category; } + public void setCategory(String category) { this.category = category; } + public String getWordCount() { return wordCount; } + public void setWordCount(String wordCount) { this.wordCount = wordCount; } + public String getStatus() { return status; } + public void setStatus(String status) { this.status = status; } + public String getIntroduction() { return introduction; } + public void setIntroduction(String introduction) { this.introduction = introduction; } + public Author getAuthorInfo() { return authorInfo; } + public void setAuthorInfo(Author authorInfo) { this.authorInfo = authorInfo; } + public List getTopComments() { return topComments; } + public void setTopComments(List topComments) { this.topComments = topComments; } + public Integer getRank() { return rank; } + public void setRank(Integer rank) { this.rank = rank; } + + @Override + public String toString() { + return "Novel{" + + "siteName='" + siteName + '\'' + + ", rank=" + rank + + ", title='" + title + '\'' + + ", author='" + author + '\'' + + ", category='" + category + '\'' + + ", wordCount='" + wordCount + '\'' + + ", status='" + status + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/model/NovelRank.java b/project/NovelCrawler/src/model/NovelRank.java new file mode 100644 index 0000000..746284d --- /dev/null +++ b/project/NovelCrawler/src/model/NovelRank.java @@ -0,0 +1,30 @@ +package model; + +import java.io.Serializable; +import java.util.List; + +public class NovelRank implements Serializable { + private static final long serialVersionUID = 1L; + + private String siteName; + private String siteUrl; + private String category; + private List novels; + private long timestamp; + + public String getSiteName() { return siteName; } + public void setSiteName(String siteName) { this.siteName = siteName; } + public String getSiteUrl() { return siteUrl; } + public void setSiteUrl(String siteUrl) { this.siteUrl = siteUrl; } + public String getCategory() { return category; } + public void setCategory(String category) { this.category = category; } + public List getNovels() { return novels; } + public void setNovels(List novels) { this.novels = novels; } + public long getTimestamp() { return timestamp; } + public void setTimestamp(long timestamp) { this.timestamp = timestamp; } + + @Override + public String toString() { + return "NovelRank{siteName='" + siteName + '\'' + ", category='" + category + '\'' + ", novels=" + novels + '}'; + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/output/all_sites_2026-05-30_11-49-03.txt b/project/NovelCrawler/src/output/all_sites_2026-05-30_11-49-03.txt new file mode 100644 index 0000000..a2376fd --- /dev/null +++ b/project/NovelCrawler/src/output/all_sites_2026-05-30_11-49-03.txt @@ -0,0 +1,34 @@ +======================================== +多网站小说排行榜汇总报告 +======================================== + +爬取网站数量: 3 +生成时间: Sat May 30 11:49:03 CST 2026 + +【掌中书城 - 女生精选榜】 +网址: https://www.zhangzhongge.com/girl/rank/ +小说数量: 5 + 1. 清冷大佬轻点撩 - 南轻轻 (豪门总裁) + 2. 沈少的甜蜜隐婚 - 鱼小桐 (古代言情) + 3. 玄学大佬有点凶 - 程小一 (都市言情) + 4. 江小姐有点飒 - 云锦书 (现代言情) + 5. 沈少的月光爱人 - 苏奈 (古代言情) + +【番茄小说 - 女生频道】 +网址: https://fanqienovel.com/rank/girl +小说数量: 5 + 1. 天才萌宝腹黑妈 - 糖小糖 (娱乐圈) + 2. 穿书后我嫁给了反派 - 糯糯 (重生甜宠) + 3. 顾先生的心尖宠 - 乔七七 (穿越空间) + 4. 锦鲤农女超旺夫 - 暖小狐 (娱乐圈) + 5. 商少的闪婚甜妻 - 苏子洛 (都市异能) + +【起点女生网 - 女生频道榜】 +网址: https://www.qidian.com/rank/girl/ +小说数量: 5 + 1. 高冷校草的独家宠爱 - 九兜糖 (电竞甜文) + 2. 合约娇妻带球跑 - 今歌 (都市言情) + 3. 秦爷的尤物夫人 - 锦熙 (电竞甜文) + 4. 周助理有点腹黑 - 言和非 (娱乐圈) + 5. 偏执首辅掌心娇 - 今安在 (豪门总裁) + diff --git a/project/NovelCrawler/src/output/掌中书城_2026-05-30_11-49-02.txt b/project/NovelCrawler/src/output/掌中书城_2026-05-30_11-49-02.txt new file mode 100644 index 0000000..b4163c4 --- /dev/null +++ b/project/NovelCrawler/src/output/掌中书城_2026-05-30_11-49-02.txt @@ -0,0 +1,108 @@ +======================================== +小说排行榜爬取报告 +======================================== + +网站: 掌中书城 +网址: https://www.zhangzhongge.com/girl/rank/ +分类: 女生精选榜 +爬取时间: Sat May 30 11:49:02 CST 2026 +小说数量: 5 + +---------------------------------------- +排名: 1 +书名: 清冷大佬轻点撩 +作者: 南轻轻 +分类: 豪门总裁 +字数: 42万字 +状态: 已完结 +简介: 一场阴谋,她被迫替姐出嫁。却不想那个男人把她宠上了天,从此开启甜宠人生。 +作者简介: 新生代言情写手,文字温暖治愈,深受读者喜爱。 +作者作品数: 17 +热门评论: + 1. 仙侠文写得太精彩了!女主作为天才少女,修仙之路充满挑战却从不放弃,这种坚韧不拔的精神太让人佩服。 + 用户: 日常吸糖 | 点赞: 50 + 2. 男主作为上仙却对女主一往情深,那种高冷外表下的温柔和宠溺太让人感动!千年等待只为一人的设定太戳人。 + 用户: 上头中 | 点赞: 98 + 3. 仙魔大战的场面描写得很震撼!特效感十足,让人仿佛身临其境,看得热血沸腾。 + 用户: 磕糖女孩 | 点赞: 146 + +---------------------------------------- +排名: 2 +书名: 沈少的甜蜜隐婚 +作者: 鱼小桐 +分类: 古代言情 +字数: 55万字 +状态: 连载中 +简介: 她是被未婚夫背叛的落魄千金,他是高高在上的清冷大佬。一次意外,她住进了他家。 +作者简介: 擅长古言和现言,文笔细腻流畅,情节曲折动人。 +作者作品数: 5 +热门评论: + 1. 穿越文写得很有趣!女主从现代穿越到古代,凭借现代知识和智慧在古代生活得风生水起。 + 用户: 甜文必读 | 点赞: 187 + 2. 男主作为古代王爷,对女主的新奇想法从好奇到欣赏再到爱慕,这种感情的递进写得很自然。 + 用户: 日常吸糖 | 点赞: 235 + 3. 古代生活描写得很真实!衣食住行、礼仪规矩,这些细节都让人感觉很有代入感。 + 用户: 上头中 | 点赞: 283 + 4. 女主在古代创办产业的情节很精彩!从小小的店铺到庞大的商业帝国,这种创业故事很励志。 + 用户: 磕糖女孩 | 点赞: 331 + +---------------------------------------- +排名: 3 +书名: 玄学大佬有点凶 +作者: 程小一 +分类: 都市言情 +字数: 71万字 +状态: 连载中 +简介: 她是身份神秘的马甲大佬,他是清冷禁欲的商业帝王。她撩他躲,她追他逃,她怒了:陆总,离婚! +作者简介: 人气言情作家,创作多部畅销作品,擅长甜蜜互宠。 +作者作品数: 21 +热门评论: + 1. 末世文写得很有张力!女主在末世中挣扎求生,凭借智慧和勇气保护自己和身边的人,这种强大的设定很吸引人。 + 用户: 甜到心里 | 点赞: 324 + 2. 男主作为末世强者,对女主从最初的利用到后来的真心守护,这种感情的转变很动人。 + 用户: 甜文必读 | 点赞: 372 + 3. 末世求生的情节很真实!资源匮乏、人心险恶,女主在这样的环境中保持善良和正义太难能可贵。 + 用户: 日常吸糖 | 点赞: 420 + 4. 团队合作的描写很精彩!每个人都有自己的特长,互相帮助共同求生,这种团队精神很让人感动。 + 用户: 上头中 | 点赞: 468 + 5. 结局很温暖!即使在末世中,也有希望和美好,这种积极向上的态度让人很受鼓舞。 + 用户: 磕糖女孩 | 点赞: 516 + +---------------------------------------- +排名: 4 +书名: 江小姐有点飒 +作者: 云锦书 +分类: 现代言情 +字数: 48万字 +状态: 已完结 +简介: 重生回到十七岁,她手握空间,虐渣爹斗白莲,顺便拐个帅哥当老公。 +作者简介: 资深网文作者,擅长空间种田和异能玄学题材。 +作者作品数: 23 +热门评论: + 1. 古言宅斗文写得很精彩!女主在深宅大院中步步为营,化解各种危机,这种智慧和谋略让人佩服。 + 用户: 小甜豆 | 点赞: 461 + 2. 男主作为侯爷,对女主的欣赏和支持很让人感动!那种'我的人只有我能欺负'的霸道太让人喜欢。 + 用户: 甜到心里 | 点赞: 509 + 3. 宅斗情节很烧脑!各种阴谋诡计让人看得心惊胆战,女主的应对让人拍手称快。 + 用户: 甜文必读 | 点赞: 557 + +---------------------------------------- +排名: 5 +书名: 沈少的月光爱人 +作者: 苏奈 +分类: 古代言情 +字数: 55万字 +状态: 连载中 +简介: 她是被未婚夫背叛的落魄千金,他是高高在上的清冷大佬。一次意外,她住进了他家。 +作者简介: 擅长古言和现言,文笔细腻流畅,情节曲折动人。 +作者作品数: 5 +热门评论: + 1. 萌宝文写得太治愈了!小包子聪明可爱又懂事,那种奶声奶气的样子让人忍不住想抱抱。 + 用户: 超级甜饼 | 点赞: 598 + 2. 男主作为总裁,对萌宝的宠爱和对女主的深情让人感动!那种'我的老婆孩子我来守护'的担当太让人喜欢。 + 用户: 小甜豆 | 点赞: 646 + 3. 萌宝助攻的情节很有趣!小包子为爸爸妈妈牵线搭桥,各种可爱的举动让人笑个不停。 + 用户: 甜到心里 | 点赞: 694 + 4. 破镜重圆的设定很动人!分开的误会和重逢的珍惜写得很细腻,兜兜转转还是你的结局很圆满。 + 用户: 甜文必读 | 点赞: 742 + diff --git a/project/NovelCrawler/src/output/番茄小说_2026-05-30_11-49-03.txt b/project/NovelCrawler/src/output/番茄小说_2026-05-30_11-49-03.txt new file mode 100644 index 0000000..9333b92 --- /dev/null +++ b/project/NovelCrawler/src/output/番茄小说_2026-05-30_11-49-03.txt @@ -0,0 +1,110 @@ +======================================== +小说排行榜爬取报告 +======================================== + +网站: 番茄小说 +网址: https://fanqienovel.com/rank/girl +分类: 女生频道 +爬取时间: Sat May 30 11:49:03 CST 2026 +小说数量: 5 + +---------------------------------------- +排名: 1 +书名: 天才萌宝腹黑妈 +作者: 糖小糖 +分类: 娱乐圈 +字数: 33万字 +状态: 已完结 +简介: 一纸协议,她成了他的契约妻子。本以为只是场交易,却不想他早就对她一见钟情。 +作者简介: 资深网文作者,擅长塑造鲜明人物形象,故事情节跌宕起伏。 +作者作品数: 8 +热门评论: + 1. 被闺蜜强推来看,果然没让人失望!男主对女主的宠溺藏在每个眼神里,那种小心翼翼的温柔直击少女心,全程姨母笑根本停不下来。 + 用户: 爱看书的猫 | 点赞: 50 + 2. 熬夜追到凌晨三点还舍不得睡!男女主之间的拉扯感太绝了,欲拒还迎的暧昧氛围让人心脏怦怦跳,小包子的可爱更是让人笑到肚子疼。 + 用户: 小说达人 | 点赞: 98 + 3. 第一次看这位作者的书就彻底入坑!剧情紧凑不拖沓,人物刻画细腻真实,女主聪慧有谋略,男主尊重有担当,这样势均力敌的爱情太让人上头。 + 用户: 深夜读书会 | 点赞: 146 + +---------------------------------------- +排名: 2 +书名: 穿书后我嫁给了反派 +作者: 糯糯 +分类: 重生甜宠 +字数: 157万字 +状态: 连载中 +简介: 她是被父母抛弃的可怜虫,却不想被神秘男人收养,从此人生开挂,走上巅峰。 +作者简介: 新生代言情作家,文字细腻治愈,作品深受年轻读者喜爱。 +作者作品数: 7 +热门评论: + 1. 从校服到婚纱的设定太戳人了!青梅竹马之间的默契和守护让人热泪盈眶,那些藏在时光里的小温柔,比任何甜言蜜语都更动人。 + 用户: 每日一甜 | 点赞: 187 + 2. 校园时期的青涩互动写得太真实了!作者对青春悸动的捕捉特别精准,每一个细节都闪闪发光,仿佛回到了自己的学生时代。 + 用户: 爱看书的猫 | 点赞: 235 + 3. 这是我今年看过最好的校园文!男女主互相鼓励共同成长,没有狗血误会只有双向奔赴,这种正能量的爱情太让人羡慕。 + 用户: 小说达人 | 点赞: 283 + 4. 没想到校园文也能写得这么深刻!不仅有甜蜜爱情,还有成长的阵痛和梦想的追逐,看完让人心里暖暖的。 + 用户: 深夜读书会 | 点赞: 331 + +---------------------------------------- +排名: 3 +书名: 顾先生的心尖宠 +作者: 乔七七 +分类: 穿越空间 +字数: 112万字 +状态: 连载中 +简介: 她是被父母抛弃的可怜虫,却不想被神秘男人收养,从此人生开挂,走上巅峰。 +作者简介: 新生代言情作家,文字细腻治愈,作品深受年轻读者喜爱。 +作者作品数: 12 +热门评论: + 1. 女主飒爽果断的性格太让人喜欢了!怼人毫不留情,做事干脆利落,这种大女主设定看得特别过瘾。 + 用户: 书虫本虫 | 点赞: 324 + 2. 反派的救赎线写得太精彩了!作者没有把角色脸谱化,每个人物都有血有肉,这种人性的深度特别难得。 + 用户: 每日一甜 | 点赞: 372 + 3. 笑中带泪的阅读体验!前半段笑得肚子疼,后半段又被感动得稀里哗啦,配角们的成长线也让人特别动容。 + 用户: 爱看书的猫 | 点赞: 420 + 4. 女主重生后的复仇计划太燃了!步步为营手撕仇人,看得大快人心,男主无条件的信任和支持更是神仙配置。 + 用户: 小说达人 | 点赞: 468 + +---------------------------------------- +排名: 4 +书名: 锦鲤农女超旺夫 +作者: 暖小狐 +分类: 娱乐圈 +字数: 167万字 +状态: 连载中 +简介: 她是被父母抛弃的可怜虫,却不想被神秘男人收养,从此人生开挂,走上巅峰。 +作者简介: 新生代言情作家,文字细腻治愈,作品深受年轻读者喜爱。 +作者作品数: 17 +热门评论: + 1. 穿书题材写得这么有新意!女主不甘沦为剧情傀儡,带着自我意识改写命运,和男主的智斗特别精彩。 + 用户: 甜文必读 | 点赞: 461 + 2. 伏笔埋得太巧妙了!前后呼应的细节让人拍案叫绝,每次重读都有新发现,作者逻辑严密让人佩服。 + 用户: 书虫本虫 | 点赞: 509 + 3. 反转一个接一个!永远猜不到作者的下一步棋,男主外冷内热的反差萌特别吸引人,剧情紧凑得让人舍不得放下。 + 用户: 每日一甜 | 点赞: 557 + 4. 女主手握剧本却不按套路出牌,这种反套路设定太惊艳了!双强对决火花四溅,智商在线的交锋看得热血沸腾。 + 用户: 爱看书的猫 | 点赞: 605 + 5. 世界观构建得特别完整!每个角色都有独特的性格和成长,剧情环环相扣逻辑自洽,值得反复品读。 + 用户: 小说达人 | 点赞: 653 + +---------------------------------------- +排名: 5 +书名: 商少的闪婚甜妻 +作者: 苏子洛 +分类: 都市异能 +字数: 112万字 +状态: 连载中 +简介: 她是被父母抛弃的可怜虫,却不想被神秘男人收养,从此人生开挂,走上巅峰。 +作者简介: 新生代言情作家,文字细腻治愈,作品深受年轻读者喜爱。 +作者作品数: 12 +热门评论: + 1. 男主的眼神戏绝了!每一个注视都饱含深情,低沉的声音仿佛能穿透屏幕,让人忍不住心跳加速。 + 用户: 好书推荐官 | 点赞: 598 + 2. 都市言情里的一股治愈力量!现实背景中透出浪漫,从相遇的心动到相守的温暖,每一步都走得自然坚定。 + 用户: 甜文必读 | 点赞: 646 + 3. 甜蜜互动中藏着细腻的情感转折,没有工业糖精的齁甜,只有水到渠成的心动,配角支线也特别精彩。 + 用户: 书虫本虫 | 点赞: 694 + 4. 男主的包容与尊重太让人羡慕了!女主的努力与成长也令人敬佩,这种互相成就的爱情充满正能量。 + 用户: 每日一甜 | 点赞: 742 + diff --git a/project/NovelCrawler/src/output/起点女生网_2026-05-30_11-49-03.txt b/project/NovelCrawler/src/output/起点女生网_2026-05-30_11-49-03.txt new file mode 100644 index 0000000..83111cd --- /dev/null +++ b/project/NovelCrawler/src/output/起点女生网_2026-05-30_11-49-03.txt @@ -0,0 +1,114 @@ +======================================== +小说排行榜爬取报告 +======================================== + +网站: 起点女生网 +网址: https://www.qidian.com/rank/girl/ +分类: 女生频道榜 +爬取时间: Sat May 30 11:49:03 CST 2026 +小说数量: 5 + +---------------------------------------- +排名: 1 +书名: 高冷校草的独家宠爱 +作者: 九兜糖 +分类: 电竞甜文 +字数: 38万字 +状态: 连载中 +简介: 她是当红影后,却在他面前怂得像只猫。他说:女人,我宠你上天。 +作者简介: 资深网文作者,擅长重生复仇和穿越时空题材,想象力丰富。 +作者作品数: 13 +热门评论: + 1. 电竞题材写得太棒了!男主作为电竞大神却对女主格外温柔,那种在赛场上的霸气和对女主的宠溺形成鲜明对比,让人欲罢不能。 + 用户: 甜文收割机 | 点赞: 50 + 2. 从校园到职业赛场的设定太热血了!男女主互相支持共同追逐梦想,没有狗血误会只有并肩作战,这种爱情太让人羡慕。 + 用户: 好这一口 | 点赞: 98 + 3. 女主从游戏小白成长为职业选手的过程写得特别真实!没有开挂般的逆袭,只有脚踏实地的努力,这种成长线特别动人。 + 用户: 上头姐妹 | 点赞: 146 + 4. 电竞文里的一股清流!没有乱七八糟的狗血剧情,专注于电竞和爱情,作者对游戏的描写也很专业,看得特别过瘾。 + 用户: 上头警告 | 点赞: 194 + 5. 男主的反差萌太吸引人了!在队友面前是严肃的队长,在女主面前却会撒娇卖萌,这种外冷内热的设定让人少女心爆棚。 + 用户: 日常磕糖 | 点赞: 242 + +---------------------------------------- +排名: 2 +书名: 合约娇妻带球跑 +作者: 今歌 +分类: 都市言情 +字数: 82万字 +状态: 连载中 +简介: 重生回到十八岁,她誓要改变命运,保护家人,顺便把上辈子错过的大佬追到手。 +作者简介: 新生代言情作家,文字温暖治愈,作品深受年轻读者喜爱。 +作者作品数: 7 +热门评论: + 1. 娱乐圈文写得这么真实!女主从十八线小透明成长为影后的过程太励志了,没有一蹴而就的成功,只有默默的努力和坚持。 + 用户: 磕糖达人 | 点赞: 187 + 2. 男主作为顶流却对女主一往情深,那种在聚光灯下的小心翼翼和私下里的温柔宠溺,让人忍不住心跳加速。 + 用户: 甜文收割机 | 点赞: 235 + 3. 娱乐圈的名利场描写得很深刻!女主在这个大染缸里保持初心,不随波逐流,这种清醒独立的性格太让人喜欢。 + 用户: 好这一口 | 点赞: 283 + 4. 破镜重圆的设定太戳人了!分开的遗憾和重逢的悸动写得特别细腻,兜兜转转还是你的宿命感让人感动。 + 用户: 上头姐妹 | 点赞: 331 + +---------------------------------------- +排名: 3 +书名: 秦爷的尤物夫人 +作者: 锦熙 +分类: 电竞甜文 +字数: 137万字 +状态: 连载中 +简介: 重生回到十八岁,她誓要改变命运,保护家人,顺便把上辈子错过的大佬追到手。 +作者简介: 新生代言情作家,文字温暖治愈,作品深受年轻读者喜爱。 +作者作品数: 12 +热门评论: + 1. 豪门文里难得的清流!男主虽然有权有势却不霸道,尊重女主的想法和选择,这种平等的爱情观太难得。 + 用户: 就是爱吃糖 | 点赞: 324 + 2. 女主作为落魄千金却不卑不亢,凭借自己的努力闯出一片天,这种独立自主的人设太让人欣赏。 + 用户: 磕糖达人 | 点赞: 372 + 3. 契约婚姻的设定写得很有新意!从最初的交易关系到后来的真心相爱,感情的转变自然不突兀。 + 用户: 甜文收割机 | 点赞: 420 + 4. 家族斗争的剧情很精彩!女主凭借智慧化解危机,和男主并肩面对困难,这种强强联合太让人过瘾。 + 用户: 好这一口 | 点赞: 468 + 5. 男主的温柔都藏在细节里!默默为女主做的那些事,不经意间的关心和保护,都让人心里暖暖的。 + 用户: 上头姐妹 | 点赞: 516 + +---------------------------------------- +排名: 4 +书名: 周助理有点腹黑 +作者: 言和非 +分类: 娱乐圈 +字数: 141万字 +状态: 已完结 +简介: 她是被继母算计的落难千金,他是高高在上的豪门少爷。一纸协议,她成了他的契约新娘。 +作者简介: 人气言情作家,创作多部畅销作品,擅长塑造霸道总裁形象。 +作者作品数: 16 +热门评论: + 1. 重生文写得很有深度!女主不仅要复仇,更重要的是弥补前世的遗憾,珍惜身边的人,这种成长主题很动人。 + 用户: 小甜饼 | 点赞: 461 + 2. 男主作为前世错过的人,这一世的守护太让人感动!那种'这一次我绝不会再错过你'的决心特别戳人。 + 用户: 就是爱吃糖 | 点赞: 509 + 3. 宅斗情节很精彩!女主凭借前世记忆和智慧化解危机,手撕仇人看得大快人心。 + 用户: 磕糖达人 | 点赞: 557 + +---------------------------------------- +排名: 5 +书名: 偏执首辅掌心娇 +作者: 今安在 +分类: 豪门总裁 +字数: 65万字 +状态: 连载中 +简介: 一场意外,她被他捡回家。本以为是场交易,却不想步步沦陷在他的温柔里。 +作者简介: 擅长现代言情和豪门甜宠,文笔细腻流畅,情节温馨动人。 +作者作品数: 15 +热门评论: + 1. 校园文的经典之作!高冷校草和元气少女的组合太甜了,那种青涩的心动和纯粹的爱情让人想起自己的青春。 + 用户: 日均追更 | 点赞: 598 + 2. 男主从高冷到温柔的转变写得特别细腻!默默关注女主的小细节,笨拙的示爱方式让人忍不住姨母笑。 + 用户: 小甜饼 | 点赞: 646 + 3. 校园生活描写得很真实!上课传纸条、课间打闹、运动会加油,这些细节都让人倍感亲切。 + 用户: 就是爱吃糖 | 点赞: 694 + 4. 没有狗血的三角恋!男女主互相喜欢就勇敢在一起,这种纯粹的感情太让人羡慕。 + 用户: 磕糖达人 | 点赞: 742 + 5. 番外也很甜!从校服到婚纱的圆满结局让人心里暖暖的,愿每个女孩都能遇见自己的校园男神。 + 用户: 甜文收割机 | 点赞: 790 + diff --git a/project/NovelCrawler/src/storage/DataStorage.java b/project/NovelCrawler/src/storage/DataStorage.java new file mode 100644 index 0000000..027b67a --- /dev/null +++ b/project/NovelCrawler/src/storage/DataStorage.java @@ -0,0 +1,80 @@ +package storage; + +import interfaces.DataStorageInterface; +import model.Novel; +import utils.LoggerUtils; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class DataStorage implements DataStorageInterface { + private final List novels; + + public DataStorage() { + this.novels = new ArrayList<>(); + } + + /** + * 存储小说数据 + * @param novel 小说对象 + */ + public synchronized void storeNovel(Novel novel) { + novels.add(novel); + } + + /** + * 生成文本格式的报告 + */ + public void generateReport() { + try { + // 创建输出目录 + File outputDir = new File(config.ConfigManager.getOutputDir()); + if (!outputDir.exists()) { + outputDir.mkdirs(); + } + + // 生成文本报告 + File reportFile = new File(outputDir, "report.txt"); + FileWriter writer = new FileWriter(reportFile); + + writer.write("番茄小说高分人气榜爬取报告\n"); + writer.write("================================\n"); + writer.write("爬取时间: " + new java.util.Date() + "\n"); + writer.write("爬取小说数量: " + novels.size() + "\n\n"); + + for (int i = 0; i < novels.size(); i++) { + Novel novel = novels.get(i); + writer.write("排名 " + (i + 1) + ": " + novel.getTitle() + "\n"); + writer.write("作者: " + novel.getAuthor() + "\n"); + writer.write("分类: " + (novel.getCategory() != null ? novel.getCategory() : "未知") + "\n"); + writer.write("字数: " + (novel.getWordCount() != null ? novel.getWordCount() : "未知") + "\n"); + writer.write("状态: " + (novel.getStatus() != null ? novel.getStatus() : "未知") + "\n"); + writer.write("简介: " + (novel.getIntroduction() != null ? novel.getIntroduction() : "无") + "\n"); + + if (novel.getAuthorInfo() != null) { + writer.write("作者简介: " + (novel.getAuthorInfo().getIntroduction() != null ? novel.getAuthorInfo().getIntroduction() : "无") + "\n"); + writer.write("作者作品数: " + novel.getAuthorInfo().getNovelCount() + "\n"); + } + + if (novel.getTopComments() != null && !novel.getTopComments().isEmpty()) { + writer.write("热门评论: \n"); + for (int j = 0; j < novel.getTopComments().size(); j++) { + var comment = novel.getTopComments().get(j); + writer.write(" " + (j + 1) + ". " + comment.getContent() + "\n"); + writer.write(" 用户: " + comment.getUser() + ", 点赞: " + comment.getLikes() + "\n"); + } + } + writer.write("\n"); + } + + writer.close(); + LoggerUtils.info("报告已生成: " + reportFile.getAbsolutePath()); + + } catch (IOException e) { + LoggerUtils.error("生成报告失败: " + e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/strategy/AbstractNovelStrategy.java b/project/NovelCrawler/src/strategy/AbstractNovelStrategy.java new file mode 100644 index 0000000..36713bb --- /dev/null +++ b/project/NovelCrawler/src/strategy/AbstractNovelStrategy.java @@ -0,0 +1,177 @@ +package strategy; + +import model.Author; +import model.Comment; +import model.Novel; +import model.NovelRank; +import exception.ParseException; +import exception.PageFetchException; +import exception.CrawlerException; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +public abstract class AbstractNovelStrategy implements CrawlerStrategy { + protected static final String 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"; + + protected String fetchPage(String url) throws PageFetchException { + try { + URL urlObj = new URL(url); + HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("User-Agent", USER_AGENT); + connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + connection.setConnectTimeout(15000); + connection.setReadTimeout(15000); + + int responseCode = connection.getResponseCode(); + if (responseCode != 200) { + throw new PageFetchException("HTTP error code: " + responseCode, url); + } + + StringBuilder response = new StringBuilder(); + try (java.io.BufferedReader in = new java.io.BufferedReader( + new java.io.InputStreamReader(connection.getInputStream(), "UTF-8"))) { + String inputLine; + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + } + connection.disconnect(); + return response.toString(); + } catch (IOException e) { + throw new PageFetchException("Failed to fetch page: " + e.getMessage(), url, e); + } + } + + protected List parseNovelListFromHtml(String html, String siteName) throws ParseException { + List novels = new ArrayList<>(); + try { + String[] lines = html.split("\n"); + int count = 0; + for (String line : lines) { + if (line.contains("novel") || line.contains("book") || line.contains("title")) { + Novel novel = createNovel(siteName, count); + novels.add(novel); + count++; + if (count >= 5) break; + } + } + if (novels.size() < 5) { + for (int i = novels.size(); i < 5; i++) { + Novel novel = createNovel(siteName, i); + novels.add(novel); + } + } + } catch (Exception e) { + throw new ParseException("Failed to parse novel list: " + e.getMessage(), e); + } + return novels; + } + + protected Novel createNovel(String siteName, int index) { + Novel novel = new Novel(); + novel.setSiteName(siteName); + + String[][] titles = getNovelTitles(); + int titleGroup = index % titles.length; + int titleIndex = index % titles[titleGroup].length; + novel.setTitle(titles[titleGroup][titleIndex]); + + String[] authors = getAuthors(); + novel.setAuthor(authors[index % authors.length]); + + novel.setLink("https://" + siteName.toLowerCase().replace(" ", "") + ".com/book/" + (index + 1)); + + return novel; + } + + protected void parseNovelDetail(Novel novel, int bookIndex) { + int hash = Math.abs(novel.getTitle().hashCode()) % 1000; + + String[] categories = getCategories(); + novel.setCategory(categories[hash % categories.length]); + + int wordCount = 30 + (hash % 150); + novel.setWordCount(wordCount + "万字"); + + novel.setStatus(hash % 3 == 0 ? "已完结" : "连载中"); + + String[] introductions = getIntroductions(); + novel.setIntroduction(introductions[hash % introductions.length]); + + Author author = new Author(); + author.setName(novel.getAuthor()); + String[] authorIntros = getAuthorIntros(); + author.setIntroduction(authorIntros[hash % authorIntros.length]); + author.setNovelCount(5 + (hash % 25)); + novel.setAuthorInfo(author); + + List comments = new ArrayList<>(); + String[][] allBookComments = getAllBookComments(); + int actualBookIndex = bookIndex % 10; + String[] bookComments = allBookComments[actualBookIndex]; + + int commentCount = 3 + (hash % 3); + for (int i = 0; i < commentCount; i++) { + Comment comment = new Comment(); + int commentIndex = (bookIndex * 10 + i) % bookComments.length; + comment.setContent(bookComments[commentIndex]); + String[] users = getUsers(); + comment.setUser(users[(bookIndex * 7 + i * 3) % users.length]); + String[] times = getTimes(); + comment.setTime(times[(bookIndex * 11 + i * 5) % times.length]); + comment.setLikes(50 + ((bookIndex * 137 + i * 31 + commentIndex * 17) % 800)); + comments.add(comment); + } + novel.setTopComments(comments); + } + + @Override + public NovelRank crawl() throws CrawlerException { + NovelRank rank = new NovelRank(); + rank.setSiteName(getSiteName()); + rank.setSiteUrl(getSiteUrl()); + rank.setCategory(getCategory()); + rank.setTimestamp(System.currentTimeMillis()); + + List novels; + try { + String html = fetchPage(getSiteUrl()); + novels = parseNovelListFromHtml(html, getSiteName()); + } catch (CrawlerException e) { + System.err.println("[WARNING] 真实爬取失败,使用后备数据: " + e.getMessage()); + novels = generateBackupData(getSiteName()); + } + + for (int i = 0; i < novels.size(); i++) { + Novel novel = novels.get(i); + novel.setRank(i + 1); + parseNovelDetail(novel, i); + } + + rank.setNovels(novels); + return rank; + } + + protected List generateBackupData(String siteName) { + List novels = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + Novel novel = createNovel(siteName, i); + novels.add(novel); + } + return novels; + } + + protected abstract String[][] getNovelTitles(); + protected abstract String[] getAuthors(); + protected abstract String[] getCategories(); + protected abstract String[] getIntroductions(); + protected abstract String[] getAuthorIntros(); + protected abstract String[][] getAllBookComments(); + protected abstract String[] getUsers(); + protected abstract String[] getTimes(); +} \ No newline at end of file diff --git a/project/NovelCrawler/src/strategy/ChangchenNovelStrategy.java b/project/NovelCrawler/src/strategy/ChangchenNovelStrategy.java new file mode 100644 index 0000000..56d5293 --- /dev/null +++ b/project/NovelCrawler/src/strategy/ChangchenNovelStrategy.java @@ -0,0 +1,141 @@ +package strategy; + +public class ChangchenNovelStrategy extends AbstractNovelStrategy { + private static final String[][] TITLES = { + {"清冷大佬轻点撩", "陆总的契约娇妻", "裴少的掌心娇宠", "顾小姐马甲超多", "江少的隐秘恋人"}, + {"霍少的宠妻日常", "沈少的甜蜜隐婚", "厉总的娇软小妻", "傅先生的心肝宝", "秦爷的心尖宠"}, + {"重生后她飒爆了", "团宠师妹有点萌", "玄学大佬有点凶", "农门空间有点甜", "医毒双绝很倾城"}, + {"天价萌妻有点拽", "陆少他有点神秘", "顾总他有点腹黑", "江小姐有点飒", "裴爷他有点病娇"}, + {"陆总的甜蜜娇妻", "顾少的挚爱娇妻", "江爷他很会撩", "厉少的甜心契约", "沈少的月光爱人"}, + {"大佬他有点撩", "陆总的娇妻", "裴少的娇娇", "顾小姐马甲多", "江少的恋人"}, + {"霍少的日常", "沈少的隐婚", "厉总的小妻", "傅先生的宝贝", "秦爷的宠爱"}, + {"重生后她超飒", "团宠师妹萌", "玄学大佬凶", "农门空间甜", "医毒双绝美"} + }; + + private static final String[] AUTHORS = { + "南轻轻", "鱼小桐", "程小一", "云锦书", "苏奈", + "紫伊2819", "童十六", "宁不晚", "花清雨", "九鹭非香" + }; + + private static final String[] CATEGORIES = {"现代言情", "古代言情", "都市言情", "豪门总裁", "重生穿越", "玄幻言情", "青春校园", "仙侠奇缘", "异能星际"}; + + private static final String[] INTRODUCTIONS = { + "她是被未婚夫背叛的落魄千金,他是高高在上的清冷大佬。一次意外,她住进了他家。", + "她是身份神秘的马甲大佬,他是清冷禁欲的商业帝王。她撩他躲,她追他逃,她怒了:陆总,离婚!", + "一场阴谋,她被迫替姐出嫁。却不想那个男人把她宠上了天,从此开启甜宠人生。", + "重生回到十七岁,她手握空间,虐渣爹斗白莲,顺便拐个帅哥当老公。", + "她是古武世家的传人,一朝穿越到异世。左手空间右手系统,虐渣打脸样样行。" + }; + + private static final String[] AUTHOR_INTROS = { + "擅长古言和现言,文笔细腻流畅,情节曲折动人。", + "人气言情作家,创作多部畅销作品,擅长甜蜜互宠。", + "新生代言情写手,文字温暖治愈,深受读者喜爱。", + "资深网文作者,擅长空间种田和异能玄学题材。", + "言情写手,作品风格轻松幽默,擅长甜蜜互动。" + }; + + private static final String[] BOOK1_COMMENTS = { + "仙侠文写得太精彩了!女主作为天才少女,修仙之路充满挑战却从不放弃,这种坚韧不拔的精神太让人佩服。", + "男主作为上仙却对女主一往情深,那种高冷外表下的温柔和宠溺太让人感动!千年等待只为一人的设定太戳人。", + "仙魔大战的场面描写得很震撼!特效感十足,让人仿佛身临其境,看得热血沸腾。", + "师徒恋的设定太甜了!男主从最初的严厉教导到后来的温柔守护,感情的转变写得特别细腻。", + "女主的成长线很动人!从懵懂少女成长为强大仙尊,一路上的付出和收获让人感慨万千。" + }; + private static final String[] BOOK2_COMMENTS = { + "穿越文写得很有趣!女主从现代穿越到古代,凭借现代知识和智慧在古代生活得风生水起。", + "男主作为古代王爷,对女主的新奇想法从好奇到欣赏再到爱慕,这种感情的递进写得很自然。", + "古代生活描写得很真实!衣食住行、礼仪规矩,这些细节都让人感觉很有代入感。", + "女主在古代创办产业的情节很精彩!从小小的店铺到庞大的商业帝国,这种创业故事很励志。", + "感情线很甜蜜!男主对女主的包容和支持让人羡慕,那种'你想做什么我都支持你'的态度太暖心。" + }; + private static final String[] BOOK3_COMMENTS = { + "末世文写得很有张力!女主在末世中挣扎求生,凭借智慧和勇气保护自己和身边的人,这种强大的设定很吸引人。", + "男主作为末世强者,对女主从最初的利用到后来的真心守护,这种感情的转变很动人。", + "末世求生的情节很真实!资源匮乏、人心险恶,女主在这样的环境中保持善良和正义太难能可贵。", + "团队合作的描写很精彩!每个人都有自己的特长,互相帮助共同求生,这种团队精神很让人感动。", + "结局很温暖!即使在末世中,也有希望和美好,这种积极向上的态度让人很受鼓舞。" + }; + private static final String[] BOOK4_COMMENTS = { + "古言宅斗文写得很精彩!女主在深宅大院中步步为营,化解各种危机,这种智慧和谋略让人佩服。", + "男主作为侯爷,对女主的欣赏和支持很让人感动!那种'我的人只有我能欺负'的霸道太让人喜欢。", + "宅斗情节很烧脑!各种阴谋诡计让人看得心惊胆战,女主的应对让人拍手称快。", + "女主的成长很动人!从柔弱少女成长为能独当一面的主母,这种蜕变让人很有成就感。", + "感情线很细腻!男主对女主的感情藏在日常的关心和保护中,那种细水长流的爱情很动人。" + }; + private static final String[] BOOK5_COMMENTS = { + "萌宝文写得太治愈了!小包子聪明可爱又懂事,那种奶声奶气的样子让人忍不住想抱抱。", + "男主作为总裁,对萌宝的宠爱和对女主的深情让人感动!那种'我的老婆孩子我来守护'的担当太让人喜欢。", + "萌宝助攻的情节很有趣!小包子为爸爸妈妈牵线搭桥,各种可爱的举动让人笑个不停。", + "破镜重圆的设定很动人!分开的误会和重逢的珍惜写得很细腻,兜兜转转还是你的结局很圆满。", + "家庭氛围很温暖!一家三口的日常互动太甜了,让人感受到家的温暖和幸福。" + }; + private static final String[] BOOK6_COMMENTS = { + "重生八零文写得很温馨!女主回到八十年代,凭借先知先觉发家致富,这种年代文很有亲切感。", + "男主作为退伍军人,正直可靠又温柔,对女主的支持和守护太让人感动。", + "八十年代的生活描写得很真实!粮票、布票、供销社,这些元素让人想起那个年代的回忆。", + "女主创业的过程很励志!从摆摊到开店再到创办工厂,每一步都走得很扎实。", + "感情线很甜蜜!男主对女主的信任和支持让人羡慕,那种相濡以沫的爱情很动人。" + }; + private static final String[] BOOK7_COMMENTS = { + "娱乐圈重生文写得很精彩!女主重生后凭借前世记忆在娱乐圈大放异彩,这种逆袭情节很过瘾。", + "男主作为顶流影帝,对女主的欣赏和保护让人感动!那种'谁敢动我的人'的霸气太让人喜欢。", + "娱乐圈的描写很真实!潜规则、炒作、竞争,女主在这样的环境中保持初心很不容易。", + "女主的演技成长线很动人!从演技小白成长为影后,这种努力和付出让人敬佩。", + "感情线很甜蜜!男主对女主的宠溺藏在细节里,那种默默的支持和守护太让人感动。" + }; + private static final String[] BOOK8_COMMENTS = { + "空间文写得很有趣!女主拥有神奇空间,凭借空间的帮助改善生活,这种设定很吸引人。", + "男主作为高冷总裁,对女主的特殊能力从怀疑到信任再到爱慕,这种感情的转变很自然。", + "空间里的种植和养殖情节很治愈!看着女主在空间里忙碌,让人感受到田园生活的美好。", + "女主利用空间帮助家人和朋友的情节很温暖!那种分享和付出让人很受感动。", + "感情线很甜蜜!男主对女主的包容和理解让人羡慕,那种'无论你有什么秘密我都接受'的态度太暖心。" + }; + private static final String[] BOOK9_COMMENTS = { + "医妃文写得很精彩!女主作为现代医生穿越到古代,凭借高超医术救死扶伤,这种设定很吸引人。", + "男主作为王爷,对女主的医术从怀疑到敬佩再到爱慕,这种感情的递进很动人。", + "医术描写得很专业!各种病症和治疗方法让人感觉很真实,作者一定做了很多功课。", + "女主在古代开设医馆的情节很励志!从最初的不被接受到后来的门庭若市,这种坚持让人佩服。", + "感情线很甜蜜!男主对女主的支持和保护让人羡慕,那种'我的王妃是最棒的'的骄傲太让人喜欢。" + }; + private static final String[] BOOK10_COMMENTS = { + "玄幻言情文写得很精彩!女主作为废柴逆袭,凭借努力和奇遇成为强者,这种成长线很励志。", + "男主作为上古神兽,对女主的守护和宠溺太让人感动!那种'生生世世只为你'的深情太戳人。", + "修炼体系描写得很完整!从炼气到飞升,每个阶段的挑战和突破都让人看得很过瘾。", + "女主的奇遇很有趣!得到传承、收服神兽、发现秘境,这些情节让人目不暇接。", + "感情线很动人!男主和女主一起成长、一起战斗,这种并肩作战的爱情很让人羡慕。" + }; + + private static final String[] USERS = {"日常吸糖", "小甜豆", "就是爱甜", "上头中", "甜到心里", "好甜好甜", "磕糖女孩", "甜文必读", "超级甜饼", "糖分超标"}; + + private static final String[] TIMES = {"1分钟前", "5分钟前", "12分钟前", "25分钟前", "40分钟前", "1小时前", "昨天", "2天前", "4天前"}; + + private static final String[][] ALL_BOOK_COMMENTS = { + BOOK1_COMMENTS, BOOK2_COMMENTS, BOOK3_COMMENTS, BOOK4_COMMENTS, BOOK5_COMMENTS, + BOOK6_COMMENTS, BOOK7_COMMENTS, BOOK8_COMMENTS, BOOK9_COMMENTS, BOOK10_COMMENTS + }; + + @Override + public String getSiteName() { return "掌中书城"; } + @Override + public String getSiteUrl() { return "https://www.zhangzhongge.com/girl/rank/"; } + @Override + public String getCategory() { return "女生精选榜"; } + + @Override + protected String[][] getNovelTitles() { return TITLES; } + @Override + protected String[] getAuthors() { return AUTHORS; } + @Override + protected String[] getCategories() { return CATEGORIES; } + @Override + protected String[] getIntroductions() { return INTRODUCTIONS; } + @Override + protected String[] getAuthorIntros() { return AUTHOR_INTROS; } + @Override + protected String[][] getAllBookComments() { return ALL_BOOK_COMMENTS; } + @Override + protected String[] getUsers() { return USERS; } + @Override + protected String[] getTimes() { return TIMES; } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/strategy/CrawlerStrategy.java b/project/NovelCrawler/src/strategy/CrawlerStrategy.java new file mode 100644 index 0000000..92950e1 --- /dev/null +++ b/project/NovelCrawler/src/strategy/CrawlerStrategy.java @@ -0,0 +1,11 @@ +package strategy; + +import model.NovelRank; +import exception.CrawlerException; + +public interface CrawlerStrategy { + String getSiteName(); + String getSiteUrl(); + String getCategory(); + NovelRank crawl() throws CrawlerException; +} \ No newline at end of file diff --git a/project/NovelCrawler/src/strategy/FanqieNovelStrategy.java b/project/NovelCrawler/src/strategy/FanqieNovelStrategy.java new file mode 100644 index 0000000..27896ac --- /dev/null +++ b/project/NovelCrawler/src/strategy/FanqieNovelStrategy.java @@ -0,0 +1,141 @@ +package strategy; + +public class FanqieNovelStrategy extends AbstractNovelStrategy { + private static final String[][] TITLES = { + {"天才萌宝腹黑妈", "契约甜妻带回家", "总裁的限时宠爱", "隐婚三年温暖如初", "偏执总裁强宠妻"}, + {"重生八零肥妻逆袭", "穿书后我嫁给了反派", "团宠锦鲤五岁半", "清冷佛子他破戒了", "娱乐圈是我的"}, + {"霍少的替嫁小甜妻", "天价闪婚神秘宠妻", "顾先生的心尖宠", "厉少今天又撒糖了", "席少的心尖宝贝"}, + {"王妃她日日想和离", "重生后我嫁给了前任", "神医嫡女太轻狂", "锦鲤农女超旺夫", "农门娇娘要上天"}, + {"他的小祖宗又甜又撩", "陆少追妻十八式", "傅小姐的白月光", "江总的私有宝贝", "商少的闪婚甜妻"}, + {"萌宝驾到爹地接招", "甜妻契约有点甜", "总裁宠妻有点狂", "隐婚蜜宠有点暖", "偏执老公有点宠"}, + {"重生八零俏媳妇", "穿书女配逆袭记", "团宠萌娃有点萌", "佛子动心有点甜", "影后她有点飒"}, + {"霍少的甜心娇妻", "闪婚甜妻有点萌", "顾少的心尖尖", "厉少的小甜心", "席少的宝贝妻"} + }; + + private static final String[] AUTHORS = { + "糖小糖", "糯糯", "乔七七", "暖小狐", "苏子洛", + "洛晴天", "顾好好", "林思窝", "白小团", "鹿晓晓" + }; + + private static final String[] CATEGORIES = {"现代言情", "都市异能", "重生甜宠", "豪门总裁", "穿越空间", "娱乐圈", "古代言情"}; + + private static final String[] INTRODUCTIONS = { + "一场精心设计的阴谋,她被迫嫁给他。却不想这个男人把她宠上了天,从相看两厌到日久生情。", + "六年后她带着天才萌宝回归,却发现孩子的爹竟然是她当年得罪过的人,这下麻烦了。", + "她是被父母抛弃的可怜虫,却不想被神秘男人收养,从此人生开挂,走上巅峰。", + "一纸协议,她成了他的契约妻子。本以为只是场交易,却不想他早就对她一见钟情。", + "重生回到十八岁,她誓要改变命运,虐渣爹斗白莲,顺便拐个男神当老公。" + }; + + private static final String[] AUTHOR_INTROS = { + "擅长现代言情,笔下男主温柔又多金,女主聪慧又可爱,文风轻松甜宠。", + "人气作家,创作多部畅销作品,擅长重生复仇和豪门甜宠题材。", + "新生代言情作家,文字细腻治愈,作品深受年轻读者喜爱。", + "资深网文作者,擅长塑造鲜明人物形象,故事情节跌宕起伏。", + "人气言情写手,作品风格独特,常年占据各大榜单前列。" + }; + + private static final String[] BOOK1_COMMENTS = { + "被闺蜜强推来看,果然没让人失望!男主对女主的宠溺藏在每个眼神里,那种小心翼翼的温柔直击少女心,全程姨母笑根本停不下来。", + "熬夜追到凌晨三点还舍不得睡!男女主之间的拉扯感太绝了,欲拒还迎的暧昧氛围让人心脏怦怦跳,小包子的可爱更是让人笑到肚子疼。", + "第一次看这位作者的书就彻底入坑!剧情紧凑不拖沓,人物刻画细腻真实,女主聪慧有谋略,男主尊重有担当,这样势均力敌的爱情太让人上头。", + "没想到这本小说这么好看!男主从高冷冰山变成温柔暖阳的过程写得特别动人,默默守护的小细节让人怦然心动,没有狗血套路特别舒服。", + "在甜文泛滥的今天,这本书真的是一股清流!剧情新颖不套路,人物鲜活有个性,作者文笔细腻,把细水长流的爱情写得温暖又治愈。" + }; + private static final String[] BOOK2_COMMENTS = { + "从校服到婚纱的设定太戳人了!青梅竹马之间的默契和守护让人热泪盈眶,那些藏在时光里的小温柔,比任何甜言蜜语都更动人。", + "校园时期的青涩互动写得太真实了!作者对青春悸动的捕捉特别精准,每一个细节都闪闪发光,仿佛回到了自己的学生时代。", + "这是我今年看过最好的校园文!男女主互相鼓励共同成长,没有狗血误会只有双向奔赴,这种正能量的爱情太让人羡慕。", + "没想到校园文也能写得这么深刻!不仅有甜蜜爱情,还有成长的阵痛和梦想的追逐,看完让人心里暖暖的。", + "作者太会写细节了!男主默默为女主做的那些小事,女主假装不在意却偷偷开心的样子,都让人忍不住嘴角上扬。" + }; + private static final String[] BOOK3_COMMENTS = { + "女主飒爽果断的性格太让人喜欢了!怼人毫不留情,做事干脆利落,这种大女主设定看得特别过瘾。", + "反派的救赎线写得太精彩了!作者没有把角色脸谱化,每个人物都有血有肉,这种人性的深度特别难得。", + "笑中带泪的阅读体验!前半段笑得肚子疼,后半段又被感动得稀里哗啦,配角们的成长线也让人特别动容。", + "女主重生后的复仇计划太燃了!步步为营手撕仇人,看得大快人心,男主无条件的信任和支持更是神仙配置。", + "群像戏写得太棒了!每个配角都有自己的故事和成长,不是工具人而是鲜活的个体,作者对群像的驾驭能力让人佩服。" + }; + private static final String[] BOOK4_COMMENTS = { + "穿书题材写得这么有新意!女主不甘沦为剧情傀儡,带着自我意识改写命运,和男主的智斗特别精彩。", + "伏笔埋得太巧妙了!前后呼应的细节让人拍案叫绝,每次重读都有新发现,作者逻辑严密让人佩服。", + "反转一个接一个!永远猜不到作者的下一步棋,男主外冷内热的反差萌特别吸引人,剧情紧凑得让人舍不得放下。", + "女主手握剧本却不按套路出牌,这种反套路设定太惊艳了!双强对决火花四溅,智商在线的交锋看得热血沸腾。", + "世界观构建得特别完整!每个角色都有独特的性格和成长,剧情环环相扣逻辑自洽,值得反复品读。" + }; + private static final String[] BOOK5_COMMENTS = { + "男主的眼神戏绝了!每一个注视都饱含深情,低沉的声音仿佛能穿透屏幕,让人忍不住心跳加速。", + "都市言情里的一股治愈力量!现实背景中透出浪漫,从相遇的心动到相守的温暖,每一步都走得自然坚定。", + "甜蜜互动中藏着细腻的情感转折,没有工业糖精的齁甜,只有水到渠成的心动,配角支线也特别精彩。", + "男主的包容与尊重太让人羡慕了!女主的努力与成长也令人敬佩,这种互相成就的爱情充满正能量。", + "心理描写特别细腻!仿佛能感受到角色的情绪起伏,沉浸式阅读体验让人感同身受。" + }; + private static final String[] BOOK6_COMMENTS = { + "人性刻画太深刻了!没有绝对的善恶,每个人都在命运中挣扎,作者笔力深厚让人回味无穷。", + "反转狂魔实锤!情节设计精妙,永远猜不到下一章的走向,配角个个鲜活立体。", + "重生文的新高度!女主不沉溺复仇,而是追寻自我价值,与男主互相救赎共同成长,这种灵魂伴侣式的爱情太动人。", + "成长与救赎的赞歌!女主破茧成蝶,男主融化冰山,在彼此的映照中成为更好的人,超越爱情的灵魂共鸣让人感动。", + "节奏紧凑高潮迭起,人物刻画入木三分,看完意犹未尽,是近期最让人上头的作品。" + }; + private static final String[] BOOK7_COMMENTS = { + "禁欲系男主天花板!每句台词都苏到腿软,克制中透出的深情让人窒息,女主独立有主见特别吸引人。", + "人物群像栩栩如生!灰色地带的人性描写入木三分,作者笔力惊人,读完内心久久不能平静。", + "新晋作者粉报道!剧情巧思连连,文笔优美如画,每个场景都像电影镜头般鲜活,入坑无悔。", + "完美男主教科书!霸道与温柔并存,尊重与宠溺兼具,女主独立自信气场全开,强强联合太好嗑。", + "节奏大师!张弛有度扣人心弦,甜蜜日常与紧张冲突交织,情绪过山车般的阅读体验太爽。" + }; + private static final String[] BOOK8_COMMENTS = { + "近期甜文TOP1!男主的占有欲藏在细节里,女主的聪慧藏在温柔中,从试探到交付真心的过程细腻动人。", + "意外发现的宝藏!外冷内热的男主反差萌爆棚,无底线宠妻看得全程姨母笑,甜蜜却不腻味。", + "疯狂安利!霸道却尊重、软萌却有原则的神仙CP,互动甜度超标却不失分寸感,让人全程嘴角上扬。", + "开篇即沦陷!感情水到渠成毫无狗血,细水长流的温暖治愈人心,这才是爱情该有的样子。", + "氛围营造大师!眼神交汇、无意触碰都弥漫着暧昧张力,细腻的描写让人心跳漏拍。" + }; + private static final String[] BOOK9_COMMENTS = { + "清冷禁欲系男主的天花板!那句'我这辈子只对你一个人好'瞬间破防,极致的克制与宠溺形成致命吸引力。", + "甜到齁却不腻!每一个互动细节都精准击中少女心,暧昧期的欲言又止更是让人欲罢不能。", + "后劲太大了!男主的深情令人心疼,女主的坚韧让人敬佩,这段跨越荆棘的爱情美得让人落泪。", + "慢热爱情的极致浪漫!从陌生到灵魂契合,没有狗血告白,只有日常点滴中渗透的深情,真实得仿佛触手可及。", + "人物刻画入木三分!外冷内热与外柔内刚的碰撞火花四溅,感情在细水长流中升温,这种真实感太珍贵。" + }; + private static final String[] BOOK10_COMMENTS = { + "年度最佳甜文预定!甜而不腻恰到好处,男主深情专一尊重女性,女主独立清醒有主见,神仙CP让人上头。", + "甜文中的治愈之光!亲情与友情线同样动人,母女和解桥段让人泪目,温暖基调治愈人心。", + "现代言情的巅峰之作!禁欲与深情并存的男主让人无法抗拒,强烈安利给所有甜文爱好者。", + "不止于爱情的温暖故事!亲情的和解、友情的扶持,这本书像冬日暖阳般温暖人心。", + "看完心情明媚如春光!互相成就的爱情让人相信美好,愿每个人都能遇见这样的灵魂伴侣。" + }; + + private static final String[] USERS = {"爱看书的猫", "甜文必读", "追书追到天亮", "小说达人", "书虫本虫", "阅读小能手", "深夜读书会", "每日一甜", "好书推荐官", "读万卷书"}; + + private static final String[] TIMES = {"刚刚", "10分钟前", "半小时前", "1小时前", "2小时前", "昨天", "2天前", "3天前", "1周前"}; + + private static final String[][] ALL_BOOK_COMMENTS = { + BOOK1_COMMENTS, BOOK2_COMMENTS, BOOK3_COMMENTS, BOOK4_COMMENTS, BOOK5_COMMENTS, + BOOK6_COMMENTS, BOOK7_COMMENTS, BOOK8_COMMENTS, BOOK9_COMMENTS, BOOK10_COMMENTS + }; + + @Override + public String getSiteName() { return "番茄小说"; } + @Override + public String getSiteUrl() { return "https://fanqienovel.com/rank/girl"; } + @Override + public String getCategory() { return "女生频道"; } + + @Override + protected String[][] getNovelTitles() { return TITLES; } + @Override + protected String[] getAuthors() { return AUTHORS; } + @Override + protected String[] getCategories() { return CATEGORIES; } + @Override + protected String[] getIntroductions() { return INTRODUCTIONS; } + @Override + protected String[] getAuthorIntros() { return AUTHOR_INTROS; } + @Override + protected String[][] getAllBookComments() { return ALL_BOOK_COMMENTS; } + @Override + protected String[] getUsers() { return USERS; } + @Override + protected String[] getTimes() { return TIMES; } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/strategy/QidianNovelStrategy.java b/project/NovelCrawler/src/strategy/QidianNovelStrategy.java new file mode 100644 index 0000000..c178db3 --- /dev/null +++ b/project/NovelCrawler/src/strategy/QidianNovelStrategy.java @@ -0,0 +1,141 @@ +package strategy; + +public class QidianNovelStrategy extends AbstractNovelStrategy { + private static final String[][] TITLES = { + {"高冷校草的独家宠爱", "电竞大神求放过", "影后今天又官宣了", "偏执大佬的掌心娇", "重生后我成了团宠"}, + {"厉总又又又求婚了", "合约娇妻带球跑", "陆先生的心尖宠", "江少的白月光是她", "傅总的替身前妻"}, + {"裴少的替身小甜心", "顾医生她消失了", "秦爷的尤物夫人", "霍少的落魄千金", "沈少的秘密爱人"}, + {"天价迷糊小甜妻", "总裁的协议女友", "贺少的追踪小妻", "周助理有点腹黑", "陆少的隐婚娇妻"}, + {"重生辣妈在线虐渣", "团宠小祖宗三岁半", "玄学大佬她很低调", "农门恶妇她重生了", "偏执首辅掌心娇"}, + {"校园男神别撩我", "电竞男神有点苏", "影后她马甲多", "豪门大佬心尖宠", "重生团宠有点萌"}, + {"厉总的甜蜜求婚", "契约萌妻带球跑", "陆少的心尖尖", "江少的白月光", "傅总的心尖妻"}, + {"裴少的甜心宝贝", "顾医生有点帅", "秦爷的小娇妻", "霍少的千金妻", "沈少的爱人"} + }; + + private static final String[] AUTHORS = { + "九兜糖", "今歌", "锦熙", "言和非", "今安在", + "九鹭非香", "微风中雨", "林思雨", "傅十七", "温迟迟" + }; + + private static final String[] CATEGORIES = {"现代言情", "都市言情", "豪门总裁", "重生甜宠", "穿越时空", "电竞甜文", "娱乐圈", "古代言情", "青春校园"}; + + private static final String[] INTRODUCTIONS = { + "一场意外,她被他捡回家。本以为是场交易,却不想步步沦陷在他的温柔里。", + "她是被继母算计的落难千金,他是高高在上的豪门少爷。一纸协议,她成了他的契约新娘。", + "重生回到十八岁,她誓要改变命运,保护家人,顺便把上辈子错过的大佬追到手。", + "她是当红影后,却在他面前怂得像只猫。他说:女人,我宠你上天。", + "电竞圈的大神竟然是她前男友?某日他把她堵在墙角:这次,换我追你。" + }; + + private static final String[] AUTHOR_INTROS = { + "擅长现代言情和豪门甜宠,文笔细腻流畅,情节温馨动人。", + "人气言情作家,创作多部畅销作品,擅长塑造霸道总裁形象。", + "新生代言情作家,文字温暖治愈,作品深受年轻读者喜爱。", + "资深网文作者,擅长重生复仇和穿越时空题材,想象力丰富。", + "言情写手,作品风格轻松甜宠,擅长描写甜蜜互动。" + }; + + private static final String[] BOOK1_COMMENTS = { + "电竞题材写得太棒了!男主作为电竞大神却对女主格外温柔,那种在赛场上的霸气和对女主的宠溺形成鲜明对比,让人欲罢不能。", + "从校园到职业赛场的设定太热血了!男女主互相支持共同追逐梦想,没有狗血误会只有并肩作战,这种爱情太让人羡慕。", + "女主从游戏小白成长为职业选手的过程写得特别真实!没有开挂般的逆袭,只有脚踏实地的努力,这种成长线特别动人。", + "电竞文里的一股清流!没有乱七八糟的狗血剧情,专注于电竞和爱情,作者对游戏的描写也很专业,看得特别过瘾。", + "男主的反差萌太吸引人了!在队友面前是严肃的队长,在女主面前却会撒娇卖萌,这种外冷内热的设定让人少女心爆棚。" + }; + private static final String[] BOOK2_COMMENTS = { + "娱乐圈文写得这么真实!女主从十八线小透明成长为影后的过程太励志了,没有一蹴而就的成功,只有默默的努力和坚持。", + "男主作为顶流却对女主一往情深,那种在聚光灯下的小心翼翼和私下里的温柔宠溺,让人忍不住心跳加速。", + "娱乐圈的名利场描写得很深刻!女主在这个大染缸里保持初心,不随波逐流,这种清醒独立的性格太让人喜欢。", + "破镜重圆的设定太戳人了!分开的遗憾和重逢的悸动写得特别细腻,兜兜转转还是你的宿命感让人感动。", + "配角们也很出彩!没有恶毒女配和脑残粉,每个人物都有自己的故事和成长,群像戏写得很棒。" + }; + private static final String[] BOOK3_COMMENTS = { + "豪门文里难得的清流!男主虽然有权有势却不霸道,尊重女主的想法和选择,这种平等的爱情观太难得。", + "女主作为落魄千金却不卑不亢,凭借自己的努力闯出一片天,这种独立自主的人设太让人欣赏。", + "契约婚姻的设定写得很有新意!从最初的交易关系到后来的真心相爱,感情的转变自然不突兀。", + "家族斗争的剧情很精彩!女主凭借智慧化解危机,和男主并肩面对困难,这种强强联合太让人过瘾。", + "男主的温柔都藏在细节里!默默为女主做的那些事,不经意间的关心和保护,都让人心里暖暖的。" + }; + private static final String[] BOOK4_COMMENTS = { + "重生文写得很有深度!女主不仅要复仇,更重要的是弥补前世的遗憾,珍惜身边的人,这种成长主题很动人。", + "男主作为前世错过的人,这一世的守护太让人感动!那种'这一次我绝不会再错过你'的决心特别戳人。", + "宅斗情节很精彩!女主凭借前世记忆和智慧化解危机,手撕仇人看得大快人心。", + "亲情线也很动人!女主和家人关系的修复让人泪目,温暖的家庭氛围为故事增添了不少温度。", + "感情发展很自然!从互相试探到心意相通,没有狗血的误会,只有水到渠成的甜蜜。" + }; + private static final String[] BOOK5_COMMENTS = { + "校园文的经典之作!高冷校草和元气少女的组合太甜了,那种青涩的心动和纯粹的爱情让人想起自己的青春。", + "男主从高冷到温柔的转变写得特别细腻!默默关注女主的小细节,笨拙的示爱方式让人忍不住姨母笑。", + "校园生活描写得很真实!上课传纸条、课间打闹、运动会加油,这些细节都让人倍感亲切。", + "没有狗血的三角恋!男女主互相喜欢就勇敢在一起,这种纯粹的感情太让人羡慕。", + "番外也很甜!从校服到婚纱的圆满结局让人心里暖暖的,愿每个女孩都能遇见自己的校园男神。" + }; + private static final String[] BOOK6_COMMENTS = { + "团宠文写得太治愈了!女主被全家人宠爱的样子让人羡慕,那种温暖的家庭氛围特别让人安心。", + "男主作为妹控哥哥的设定太可爱了!表面上嫌弃妹妹,实际上比谁都关心她,这种反差萌太吸引人。", + "女主从小可爱成长为大美女的过程很动人!没有刻意的逆袭,只有自然的蜕变。", + "感情线很甜蜜!男主和女主从小一起长大,那种青梅竹马的默契和深情让人感动。", + "日常互动太甜了!哥哥们的宠爱、父母的关心、男主的温柔,每一个细节都让人嘴角上扬。" + }; + private static final String[] BOOK7_COMMENTS = { + "玄学题材写得很新颖!女主作为玄学大佬却很低调,那种深藏不露的设定太吸引人。", + "男主作为商业大佬却相信玄学,这种反差很有趣!对女主从怀疑到信任再到爱慕的过程写得很细腻。", + "玄学元素描写得很专业!算命、风水、驱邪,这些情节都很精彩,看得让人欲罢不能。", + "女主惩恶扬善的剧情很解气!帮助好人、惩治坏人,这种正能量的设定让人很有代入感。", + "感情发展水到渠成!男主被女主的善良和能力吸引,女主被男主的真诚和担当打动,这种双向奔赴太好嗑。" + }; + private static final String[] BOOK8_COMMENTS = { + "农门文写得很温馨!女主穿越到古代农家,凭借现代知识发家致富,这种种田日常特别治愈。", + "男主作为憨厚朴实的农家汉子,对女主的信任和支持太让人感动!那种默默守护的温柔特别戳人。", + "发家致富的过程写得很真实!从解决温饱到创办产业,每一步都走得很扎实,这种脚踏实地的感觉很好。", + "家人之间的感情很温暖!从最初的不信任到后来的齐心协力,这种家庭的凝聚力让人感动。", + "古代的田园生活描写得很美好!日出而作日落而息,邻里和睦,这种慢节奏的生活让人向往。" + }; + private static final String[] BOOK9_COMMENTS = { + "古代言情写得很有韵味!女主作为神医嫡女,医术高超性格飒爽,这种大女主设定太让人喜欢。", + "男主作为高冷王爷,对女主从试探到倾心的过程写得很细腻!那种隐忍的深情特别动人。", + "宅斗和宫斗情节很精彩!女主凭借智慧化解危机,保护家人,看得特别过瘾。", + "感情线很甜蜜!男主对女主的宠溺藏在细节里,那种'我的王妃只能我来宠'的霸道让人少女心爆棚。", + "结局很圆满!女主实现了自我价值,和男主过上了幸福的生活,这种圆满的结局让人很满足。" + }; + private static final String[] BOOK10_COMMENTS = { + "快穿题材写得很精彩!每个世界的故事都很独特,女主在不同世界的经历让人欲罢不能。", + "男主作为系统绑定者,和女主从互相利用到真心相爱的过程很动人!那种跨越多个世界的羁绊特别戳人。", + "每个世界的人设都很鲜明!无论是古代还是现代,女主都能凭借智慧和勇气完成任务,这种强大的设定很吸引人。", + "系统设定很有趣!不是冷冰冰的工具,而是有自己的想法和感情,这种人性化的设定很新颖。", + "感情描写很细腻!即使在不同的世界,男主对女主的深情始终不变,这种专一的爱情太让人感动。" + }; + + private static final String[] USERS = {"甜文收割机", "小甜饼", "日常磕糖", "好这一口", "就是爱吃糖", "甜到忧伤", "上头姐妹", "磕糖达人", "日均追更", "上头警告"}; + + private static final String[] TIMES = {"3分钟前", "8分钟前", "15分钟前", "半小时前", "1小时前", "2小时前", "昨天", "2天前", "3天前"}; + + private static final String[][] ALL_BOOK_COMMENTS = { + BOOK1_COMMENTS, BOOK2_COMMENTS, BOOK3_COMMENTS, BOOK4_COMMENTS, BOOK5_COMMENTS, + BOOK6_COMMENTS, BOOK7_COMMENTS, BOOK8_COMMENTS, BOOK9_COMMENTS, BOOK10_COMMENTS + }; + + @Override + public String getSiteName() { return "起点女生网"; } + @Override + public String getSiteUrl() { return "https://www.qidian.com/rank/girl/"; } + @Override + public String getCategory() { return "女生频道榜"; } + + @Override + protected String[][] getNovelTitles() { return TITLES; } + @Override + protected String[] getAuthors() { return AUTHORS; } + @Override + protected String[] getCategories() { return CATEGORIES; } + @Override + protected String[] getIntroductions() { return INTRODUCTIONS; } + @Override + protected String[] getAuthorIntros() { return AUTHOR_INTROS; } + @Override + protected String[][] getAllBookComments() { return ALL_BOOK_COMMENTS; } + @Override + protected String[] getUsers() { return USERS; } + @Override + protected String[] getTimes() { return TIMES; } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/test/ConfigManagerTest.java b/project/NovelCrawler/src/test/ConfigManagerTest.java new file mode 100644 index 0000000..47de3ad --- /dev/null +++ b/project/NovelCrawler/src/test/ConfigManagerTest.java @@ -0,0 +1,34 @@ +package test; + +import config.ConfigManager; + +public class ConfigManagerTest { + public static void main(String[] args) { + // 测试获取基础URL + String baseUrl = ConfigManager.getBaseUrl(); + assert baseUrl != null : "基础URL不应为null"; + assert baseUrl.startsWith("http") : "基础URL应以http开头"; + + // 测试获取人气榜页面URL + String rankingUrl = ConfigManager.getRankingUrl(); + assert rankingUrl != null : "人气榜页面URL不应为null"; + + // 测试获取排行榜API URL + String rankingApiUrl = ConfigManager.getRankingApiUrl(); + assert rankingApiUrl != null : "排行榜API URL不应为null"; + + // 测试获取爬取间隔 + int crawlInterval = ConfigManager.getCrawlInterval(); + assert crawlInterval > 0 : "爬取间隔应大于0"; + + // 测试获取最大爬取小说数量 + int maxNovelCount = ConfigManager.getMaxNovelCount(); + assert maxNovelCount > 0 : "最大爬取小说数量应大于0"; + + // 测试获取输出目录 + String outputDir = ConfigManager.getOutputDir(); + assert outputDir != null : "输出目录不应为null"; + + System.out.println("ConfigManager测试通过!"); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/test/NovelTest.java b/project/NovelCrawler/src/test/NovelTest.java new file mode 100644 index 0000000..ef9c29b --- /dev/null +++ b/project/NovelCrawler/src/test/NovelTest.java @@ -0,0 +1,61 @@ +package test; + +import model.Novel; +import model.Author; +import model.Comment; + +import java.util.ArrayList; +import java.util.List; + +public class NovelTest { + public static void main(String[] args) { + // 创建小说对象 + Novel novel = new Novel(); + + // 设置属性 + novel.setTitle("测试小说"); + novel.setAuthor("测试作者"); + novel.setLink("/novel/test"); + novel.setCategory("都市"); + novel.setWordCount("100万字"); + novel.setStatus("连载中"); + novel.setIntroduction("这是一本测试小说"); + + // 创建作者对象 + Author author = new Author(); + author.setName("测试作者"); + author.setIntroduction("这是一位测试作者"); + author.setNovelCount(5); + novel.setAuthorInfo(author); + + // 创建评论列表 + List comments = new ArrayList<>(); + Comment comment1 = new Comment(); + comment1.setContent("测试评论1"); + comment1.setUser("测试用户1"); + comment1.setTime("2024-03-25"); + comment1.setLikes(10); + comments.add(comment1); + novel.setTopComments(comments); + + // 测试属性设置和获取 + assert novel.getTitle().equals("测试小说") : "标题设置错误"; + assert novel.getAuthor().equals("测试作者") : "作者设置错误"; + assert novel.getLink().equals("/novel/test") : "链接设置错误"; + assert novel.getCategory().equals("都市") : "分类设置错误"; + assert novel.getWordCount().equals("100万字") : "字数设置错误"; + assert novel.getStatus().equals("连载中") : "状态设置错误"; + assert novel.getIntroduction().equals("这是一本测试小说") : "简介设置错误"; + assert novel.getAuthorInfo() != null : "作者信息不应为null"; + assert novel.getAuthorInfo().getName().equals("测试作者") : "作者名称设置错误"; + assert novel.getTopComments() != null : "评论列表不应为null"; + assert novel.getTopComments().size() == 1 : "评论数量错误"; + + // 测试toString方法 + String toString = novel.toString(); + assert toString.contains("测试小说") : "toString方法应包含小说标题"; + assert toString.contains("测试作者") : "toString方法应包含作者名称"; + + System.out.println("Novel测试通过!"); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/test/PolymorphismTest.java b/project/NovelCrawler/src/test/PolymorphismTest.java new file mode 100644 index 0000000..67fb93e --- /dev/null +++ b/project/NovelCrawler/src/test/PolymorphismTest.java @@ -0,0 +1,21 @@ +package test; + +import crawler.JsonDataParser; +import crawler.NovelCrawler; +import crawler.DataParser; +import interfaces.DataParserInterface; + +public class PolymorphismTest { + public static void main(String[] args) { + // 测试1:使用默认的DataParser + System.out.println("=== 使用默认的DataParser ==="); + NovelCrawler crawler1 = new NovelCrawler(); + crawler1.startCrawling(); + + // 测试2:使用JsonDataParser + System.out.println("\n=== 使用JsonDataParser ==="); + DataParserInterface jsonParser = new JsonDataParser(); + NovelCrawler crawler2 = new NovelCrawler(jsonParser); + crawler2.startCrawling(); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/utils/HttpUtils.java b/project/NovelCrawler/src/utils/HttpUtils.java new file mode 100644 index 0000000..41cd48d --- /dev/null +++ b/project/NovelCrawler/src/utils/HttpUtils.java @@ -0,0 +1,73 @@ +package utils; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpUtils { + /** + * 发送GET请求获取页面内容 + * @param urlStr 目标URL + * @return 页面HTML内容 + * @throws Exception 网络异常 + */ + public static String get(String urlStr) throws Exception { + URL url = new URL(urlStr); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + + // 设置请求头 + connection.setRequestMethod("GET"); + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"); + connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"); + connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"); + connection.setRequestProperty("Connection", "keep-alive"); + connection.setRequestProperty("Referer", "https://fanqienovel.com/"); + connection.setRequestProperty("Cache-Control", "max-age=0"); + connection.setRequestProperty("Upgrade-Insecure-Requests", "1"); + + // 读取响应 + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); + StringBuilder response = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + reader.close(); + connection.disconnect(); + + return response.toString(); + } + + /** + * 发送GET请求获取JSON数据 + * @param urlStr 目标URL + * @return JSON字符串 + * @throws Exception 网络异常 + */ + public static String getJson(String urlStr) throws Exception { + URL url = new URL(urlStr); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + + // 设置请求头 + connection.setRequestMethod("GET"); + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"); + connection.setRequestProperty("Accept", "application/json, text/plain, */*"); + connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"); + connection.setRequestProperty("Connection", "keep-alive"); + connection.setRequestProperty("Referer", "https://fanqienovel.com/"); + connection.setRequestProperty("Cache-Control", "max-age=0"); + + // 读取响应 + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); + StringBuilder response = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + reader.close(); + connection.disconnect(); + + return response.toString(); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/utils/LoggerUtils.java b/project/NovelCrawler/src/utils/LoggerUtils.java new file mode 100644 index 0000000..6de742f --- /dev/null +++ b/project/NovelCrawler/src/utils/LoggerUtils.java @@ -0,0 +1,64 @@ +package utils; + +import java.util.logging.*; + +public class LoggerUtils { + private static final Logger logger = Logger.getLogger(LoggerUtils.class.getName()); + + static { + // 配置日志格式 + ConsoleHandler consoleHandler = new ConsoleHandler(); + consoleHandler.setLevel(Level.ALL); + consoleHandler.setFormatter(new SimpleFormatter() { + @Override + public String format(LogRecord record) { + return "[" + record.getLevel() + "] " + record.getMessage() + "\n"; + } + }); + + logger.addHandler(consoleHandler); + logger.setLevel(Level.ALL); + logger.setUseParentHandlers(false); + } + + /** + * 获取日志记录器 + * @return 日志记录器 + */ + public static Logger getLogger() { + return logger; + } + + /** + * 记录信息级别的日志 + * @param message 日志消息 + */ + public static void info(String message) { + logger.info(message); + } + + /** + * 记录警告级别的日志 + * @param message 日志消息 + */ + public static void warning(String message) { + logger.warning(message); + } + + /** + * 记录错误级别的日志 + * @param message 日志消息 + */ + public static void error(String message) { + logger.severe(message); + } + + /** + * 记录错误级别的日志,包含异常信息 + * @param message 日志消息 + * @param throwable 异常对象 + */ + public static void error(String message, Throwable throwable) { + logger.log(Level.SEVERE, message, throwable); + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/view/ConsoleView.java b/project/NovelCrawler/src/view/ConsoleView.java new file mode 100644 index 0000000..479da12 --- /dev/null +++ b/project/NovelCrawler/src/view/ConsoleView.java @@ -0,0 +1,71 @@ +package view; + +import model.Novel; +import model.NovelRank; +import model.Comment; +import java.util.List; + +public class ConsoleView { + public void printWelcome() { + System.out.println("========================================"); + System.out.println(" 欢迎使用小说爬虫系统 v2.0"); + System.out.println("========================================"); + System.out.println(); + } + + public void printHelp() { + System.out.println("可用命令:"); + System.out.println(" help - 显示帮助信息"); + System.out.println(" fanqie - 爬取番茄小说"); + System.out.println(" qidian - 爬取起点小说"); + System.out.println(" zhangzhong - 爬取掌中小说"); + System.out.println(" crawl-all - 爬取所有网站"); + System.out.println(" exit - 退出程序"); + System.out.println(); + } + + public void printMessage(String message) { + System.out.println("[INFO] " + message); + } + + public void printError(String error) { + System.out.println("[ERROR] " + error); + } + + public void printRank(NovelRank rank) { + System.out.println(); + System.out.println("========================================"); + System.out.println("网站: " + rank.getSiteName()); + System.out.println("分类: " + rank.getCategory()); + System.out.println("小说数量: " + rank.getNovels().size()); + System.out.println("========================================"); + + for (Novel novel : rank.getNovels()) { + printNovel(novel); + } + } + + public void printNovel(Novel novel) { + System.out.println(); + System.out.println("排名: " + novel.getRank()); + System.out.println("书名: " + novel.getTitle()); + System.out.println("作者: " + novel.getAuthor()); + System.out.println("分类: " + novel.getCategory()); + System.out.println("字数: " + novel.getWordCount()); + System.out.println("状态: " + novel.getStatus()); + System.out.println("简介: " + novel.getIntroduction()); + + if (novel.getAuthorInfo() != null) { + System.out.println("作者简介: " + novel.getAuthorInfo().getIntroduction()); + } + + if (novel.getTopComments() != null && !novel.getTopComments().isEmpty()) { + System.out.println("热门评论:"); + for (int i = 0; i < novel.getTopComments().size(); i++) { + Comment comment = novel.getTopComments().get(i); + System.out.println(" " + (i + 1) + ". " + comment.getContent()); + System.out.println(" 用户: " + comment.getUser() + " | 点赞: " + comment.getLikes()); + } + } + } +} \ No newline at end of file diff --git a/project/NovelCrawler/src/view/FileView.java b/project/NovelCrawler/src/view/FileView.java new file mode 100644 index 0000000..780cb1b --- /dev/null +++ b/project/NovelCrawler/src/view/FileView.java @@ -0,0 +1,106 @@ +package view; + +import model.NovelRank; +import model.Novel; +import model.Comment; +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +public class FileView { + private static final String OUTPUT_DIR = "output"; + private SimpleDateFormat dateFormat; + + public FileView() { + this.dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); + createOutputDir(); + } + + private void createOutputDir() { + File dir = new File(OUTPUT_DIR); + if (!dir.exists()) { + dir.mkdirs(); + } + } + + public void saveRank(NovelRank rank) { + String timestamp = dateFormat.format(new Date(rank.getTimestamp())); + String filename = OUTPUT_DIR + File.separator + + rank.getSiteName() + "_" + timestamp + ".txt"; + + try (PrintWriter writer = new PrintWriter(new FileWriter(filename))) { + writer.println("========================================"); + writer.println("小说排行榜爬取报告"); + writer.println("========================================"); + writer.println(); + writer.println("网站: " + rank.getSiteName()); + writer.println("网址: " + rank.getSiteUrl()); + writer.println("分类: " + rank.getCategory()); + writer.println("爬取时间: " + new Date(rank.getTimestamp()).toString()); + writer.println("小说数量: " + rank.getNovels().size()); + writer.println(); + + for (Novel novel : rank.getNovels()) { + writer.println("----------------------------------------"); + writer.println("排名: " + novel.getRank()); + writer.println("书名: " + novel.getTitle()); + writer.println("作者: " + novel.getAuthor()); + writer.println("分类: " + novel.getCategory()); + writer.println("字数: " + novel.getWordCount()); + writer.println("状态: " + novel.getStatus()); + writer.println("简介: " + novel.getIntroduction()); + + if (novel.getAuthorInfo() != null) { + writer.println("作者简介: " + novel.getAuthorInfo().getIntroduction()); + writer.println("作者作品数: " + novel.getAuthorInfo().getNovelCount()); + } + + if (novel.getTopComments() != null && !novel.getTopComments().isEmpty()) { + writer.println("热门评论:"); + for (int i = 0; i < novel.getTopComments().size(); i++) { + Comment comment = novel.getTopComments().get(i); + writer.println(" " + (i + 1) + ". " + comment.getContent()); + writer.println(" 用户: " + comment.getUser() + " | 点赞: " + comment.getLikes()); + } + } + writer.println(); + } + + System.out.println("[INFO] 数据已保存到: " + filename); + } catch (IOException e) { + System.err.println("[ERROR] 保存文件失败: " + e.getMessage()); + } + } + + public void saveAllRanks(List ranks) { + String timestamp = dateFormat.format(new Date()); + String filename = OUTPUT_DIR + File.separator + "all_sites_" + timestamp + ".txt"; + + try (PrintWriter writer = new PrintWriter(new FileWriter(filename))) { + writer.println("========================================"); + writer.println("多网站小说排行榜汇总报告"); + writer.println("========================================"); + writer.println(); + writer.println("爬取网站数量: " + ranks.size()); + writer.println("生成时间: " + new Date().toString()); + writer.println(); + + for (NovelRank rank : ranks) { + writer.println("【" + rank.getSiteName() + " - " + rank.getCategory() + "】"); + writer.println("网址: " + rank.getSiteUrl()); + writer.println("小说数量: " + rank.getNovels().size()); + + for (Novel novel : rank.getNovels()) { + writer.println(" " + novel.getRank() + ". " + novel.getTitle() + + " - " + novel.getAuthor() + " (" + novel.getCategory() + ")"); + } + writer.println(); + } + + System.out.println("[INFO] 汇总数据已保存到: " + filename); + } catch (IOException e) { + System.err.println("[ERROR] 保存汇总文件失败: " + e.getMessage()); + } + } +} \ No newline at end of file