package Ġcom . org . any Ċ Ċ import Ġorg . apache . http . client . Client Protocol Exception Ċ import Ġorg . apache . http . client . Response Handler Ċ import Ġorg . apache . http . client . methods . HttpGet Ċ import Ġorg . apache . http . impl . client . HttpClient s Ċ import Ġorg . apache . http . util . Entity Utils Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . parser . Parser Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* Ġ çĪ ¬ èĻ « Ċ Ġ*/ Ċ object ĠC rawler Manager Ġ{ ĊĊĠĠĠ Ġfun ĠgetData From Url ( url : ĠString ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar ĠhttpClient Ġ= ĠHttpClient s . create Default () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġht t Get Ġ= ĠHttp Get ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġcustom Ġresponse Ġhandler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Handler Ġ= ĠResponse Handler < String > Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġresponse . status Line . statusCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġif Ġ( status Ġin Ġ 2 0 0 .. 2 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentity Ġ= Ġresponse . entity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entity Ġ!= Ġnull ) ĠEntity Utils . toString ( entity !! , Ġ" UTF - 8 ") Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠClient Protocol Exception (" Unexpected Ġresponse Ġstatus : Ġ$ status ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠhttpClient . execute ( ht t Get , Ġresponse Handler ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ ul ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandler Ul ( html Text : String ): List < String >{ ĊĠĠĠĠĠĠĠ Ġval Ġreg Ex Ġ= "< ul \\ s + class =' news - list Ġcur '. * ?> .* ?</ ul >" ĊĠĠĠĠĠĠĠ Ġreturn Ġhandler Html By Regex ( html Text , reg Ex ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ div ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandler Div ( tag Text : String ): List < String >{ ĊĠĠĠĠĠĠĠ Ġvar Ġreg Ex ="< div Ġclass =' clear Ġgrey Ġnormal '> .* ?</ div ></ div >" ĊĠĠĠĠĠĠĠ Ġreturn Ġhandler Html By Regex ( tag Text , reg Ex ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠ Ġ< div Ġclass =' clear Ġgrey Ġnormal '> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġclass =' news - img '> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< a Ġhref =' http :// hb . s ina . com . cn / news / j / 2 0 1 9 - 0 2 - 0 3 / detail - i hr fq z ka 3 3 6 3 6 8 5 . s html ' Ġtarget ='_ blank '>< img Ġsrc =' http :// n . s ina img . cn / hb / transform / 2 6 6 / w 6 4 0 h 4 2 6 / 2 0 1 9 0 2 0 3 / N MN k - h sm kf yn 9 7 0 4 3 2 8 . jpg ' Ġalt =' ä¸ŃåĽ½ å¹´ å¤ ľ é¥ Ń åľ° åĽ¾ æĿ¥ äºĨ Ġæ ¹ ĸ åĮĹ äºº æľĢ çĪ± èĹ ķ ãĢģ çı į çı ł åľĨ åŃĲ åĴĮ é±¼ ç³ ķ ' Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ a > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< div Ġclass =' news - text Ġ'> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< h 2 >< a Ġhref =' http :// hb . s ina . com . cn / news / j / 2 0 1 9 - 0 2 - 0 3 / detail - i hr fq z ka 3 3 6 3 6 8 5 . s html ' Ġtarget ='_ blank '> ä¸ŃåĽ½ å¹´ å¤ ľ é¥ Ń åľ° åĽ¾ æĿ¥ äºĨ Ġæ ¹ ĸ åĮĹ äºº æľĢ çĪ± èĹ ķ ãĢģ çı į çı ł åľĨ åŃĲ åĴĮ é±¼ ç³ ķ </ a > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ h 2 > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< p >< span Ġclass =' fl '> 0 2 - 0 3 Ġ 0 9 : 0 8 </ span >& nbsp ;& nbsp ; æŃ¦ æ±ī æĻ ļ æĬ¥ < span Ġclass =' fr '>< a Ġhref ='# ' Ġclass =' grey '>< b Ġclass =' m com _ num ' Ġdata - comment =' com os - hr fq z ka 3 3 6 3 6 8 5 '></ b ></ a ></ span > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ p > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconvert News Bean ( tag Text : String ): News Bean { Ċ // ĠĠĠĠĠĠĠ Ġprintln ( tag Text ) ĊĠĠĠĠĠĠĠ Ġ// å¤ļä¸ª æŃ£ åĪĻ è¡¨è¾¾å¼ı èģĶ åĨĻ // |( ?: ( src =' (? < img Url > .* ?) ')) |( ?: (< h 2 >< a \ s + .*? >( ?< title > .*? )</ a ></ h 2 > )) |( ?: ( an >( ?< source > .* ?) < span )) |( ?: (< span \ s + class =' fl ' >( ?< time > .*? )</ sp )) ĊĠĠĠĠĠĠĠ Ġval Ġreg Ex Ġ= Ġ"( ?: (< div Ġclass =' news - img '>< a \\ s + href =' (? < link A > .*? )' \\ s + target ='_ blank '> )) |( ?: (< img \\ s + src =' (? < img Url > .*? )' \\ s + alt = )) |( ?: (< div Ġclass =' news - text Ġ' >< h 2 >< a \\ s + .*? >( ?< title > .*? )</ a ></ h 2 > )) |( ?: ( an >( ?< source > .* ?) < span )) |( ?: (< span \\ s + class =' fl ' >( ?< time > .*? )</ sp )) " ĊĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile ( reg Ex , ĠPattern . DOT ALL ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġpattern . matcher ( tag Text ) ĊĠĠĠĠĠĠĠ Ġvar Ġlink A : String ="" ĊĠĠĠĠĠĠĠ Ġvar Ġimg Url : String ="" ĊĠĠĠĠĠĠĠ Ġvar Ġtitle : String ="" ĊĠĠĠĠĠĠĠ Ġvar Ġsource ="" ĊĠĠĠĠĠĠĠ Ġvar Ġtime ="" ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( matcher . find ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher . start (" link A ") Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink A = Ġmatcher . group (" link A ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher . start (" img Url ") Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Url = matcher . group (" img Url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher . start (" title ") Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle = matcher . group (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher . start (" time ") Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime = matcher . group (" time ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher . start (" source ") Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource = matcher . group (" source ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠNews Bean ( link A , img Url , title , time , source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* Ġ ç»Ļ å®ļ æŃ£ åĪĻ ï¼Į èİ·åıĸ æĮĩå®ļ Tag åħĥç´ł ĊĠĠĠĠĠ Ġ*/ ĊĠĠ Ġprivate Ġfun Ġhandler Html By Regex ( input : String , reg Ex : ĠString ): List < String >{ ĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile ( reg Ex , ĠPattern . DOT ALL ) ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġpattern . matcher ( input ) ĊĠĠĠĠĠĠĠ Ġvar Ġlist : Mutable List < String > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( matcher . find ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( matcher . group ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} Ċ Ċ }