package Ġorg . asion . bot . selenium . controller Ċ Ċ import Ġorg . asion . bot . parser . WebDriver Detail Parser Ċ import Ġorg . asion . bot . parser . WebDriver List Parser Ċ import Ġorg . asion . bot . selenium . processor . T mall Page Ph antom Js Processor Ċ import Ġorg . asion . bot . selenium . processor . T mall Page Processor Ċ import Ġorg . asion . bot . selenium . processor . executor . ThreadPool Manager Ċ import Ġorg . asion . bot . Capture Item M anger Ċ import Ġorg . asion . bot . helper . Redis Client Local Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġus . code craft . web magic . Spider . create Ċ import Ġus . code craft . web magic . downloader . Ph antom J SD own loader ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠA sion . Ċ Ġ* Ġ@ since Ġ 2 0 1 8 / 5 / 7 . Ċ Ġ*/ Ċ @ RestController Ċ @ RequestMapping ("/ seek ") Ċ class ĠT mall Web Controller Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġcapture Item M anger : ĠCapture Item M anger ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġparser : ĠWebDriver List Parser ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġdetail Parser : ĠWebDriver Detail Parser ĊĊĠĠĠ Ġ@ RequestMapping ("/ tm all ") ĊĠĠĠ Ġfun Ġtm all Search ( key Word : ĠString ): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsp ider Ġ= Ġcreate ( T mall Page Processor ( capture Item M anger , Ġkey Word )) ĊĠĠĠĠĠĠĠ Ġval Ġph antom J SD own loader Ġ= ĠPh antom J SD own loader ("/ Users / A sion / Work station / Tools / phantom js - 2 . 1 . 1 - mac osx / bin / phantom js ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ Users / A sion / Work station / Personal / java - workspace / y tx - see ker / y tx - see ker - web / src / main / resources / templates / crawl . js ") ĊĠĠĠĠĠĠĠ Ġ// åħį è´¹ ä»£çĲĨ ä¸į ç¨ ³ å®ļ èĢģ æĮ Ĥ Ċ // ĠĠĠĠĠĠĠ Ġph antom J SD own loader . proxy Provider Ġ= ĠSimple Proxy Provider . from ( Proxy (" 0 . 0 . 0 . 0 ", Ġ 0 0 0 0 )) ĊĠĠĠĠĠĠĠ Ġsp ider . set Downloader ( phantom J SD own loader ) ĊĠĠĠĠĠĠĠ Ġsp ider . add Url (" https :// www . tm all . com /? sp m = a 2 e 1 o . 8 2 6 7 8 5 1 . 2 0 1 6 1 1 2 2 . 1 . 6 c 5 1 7 b 7 d 4 bcb pv "). thread ( 5 ). run () ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Of () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ("/ tm all / p ") ĊĠĠĠ Ġfun Ġtm all Seek (): ĠMap < String , ĠAny > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 5 ä¸ª æ¶Īè´¹ çº¿ç¨ĭ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThreadPool Manager . instance . consume ThreadPool . submit ( T mall Page Ph antom Js Processor . Page Detail Processor ( detail Parser )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġurls Ġ= ĠRedis Client Local . keys (" https :// list . tm all . com /* ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĶŁäº§ çº¿ç¨ĭ ĊĠĠĠĠĠĠĠ Ġurls . forEach Ġ{ Ġurl Ġ-> ĠThreadPool Manager . instance . produce ThreadPool . submit ( T mall Page Ph antom Js Processor . Page List Processor ( url , Ġparser )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmap Of () ĊĠĠĠ Ġ} Ċ }