package Ġpsi . crawler Ċ Ċ import Ġc rawler commons . s item aps . Abstract Site Map Ċ import Ġc rawler commons . s item aps . Site Map Ċ import Ġc rawler commons . s item aps . Site Map Index Ċ import Ġc rawler commons . s item aps . Site Map Parser Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Document Ċ import Ġpsi . api . Client Ċ import Ġjava . net . URL ĊĊ Ċ class ĠC rawler ( private Ġval Ġurl : ĠString ?) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġs ax Parser Ġ= ĠSite Map Parser ( false , Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġdoc : ĠDocument ĊĠĠĠ Ġprivate Ġval Ġclient : ĠClient Ġ= ĠClient () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . request ( url ) ĊĠĠĠĠĠĠĠ Ġdoc Ġ= ĠJ soup . parse ( response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtitle : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdoc . title () ĊĊĠĠĠ Ġval Ġpages : ĠList < String >? Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse ( URL ("$ url / sitemap . xml "), null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ-> Ġit . contains ( url !! )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠParses Ġa ĠS itemap Ġrecursively Ġmeaning Ġthat Ġif Ġthe Ġs itemap Ġis Ġa ĊĠĠĠĠ Ġ* Ġs itemap Index Ġthen Ġit Ġparses Ġall Ġof Ġthe Ġinternal Ġs item aps ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws () ĊĠĠĠ Ġprivate Ġfun Ġparse ( url : ĠURL , Ġmt : ĠString ?): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠIO Utils . toByteArray ( url ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult List : ĠArrayList < String > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġs ax Parser . is Strict Namespace Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġsm : ĠAbstract Site Map ? ĊĠĠĠĠĠĠĠ Ġ// Ġgues ses Ġthe Ġmime type ĊĠĠĠĠĠĠĠ Ġif Ġ( mt Ġ== Ġnull Ġ|| Ġmt Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsm Ġ= Ġs ax Parser . parse Site Map ( content , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsm Ġ= Ġs ax Parser . parse Site Map ( mt , Ġcontent , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sm !!. is Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinks Ġ= Ġ( sm Ġas ĠSite Map Index ). s item aps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( asm Ġin Ġlinks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult List . addAll ( parse ( asm . url , Ġmt )) Ġ// ĠRecursive Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinks Ġ= Ġ( sm Ġas ĠSite Map ). site Map Urls ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( sm u Ġin Ġlinks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult List . add ( sm u . url . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult List ĊĠĠĠ Ġ} Ċ } Ċ