package Ġcom . epic dim a . sf ct . core . parsers Ċ Ċ import Ġcom . epic dim a . sf ct . core . model . Inst itution Ċ import Ġcom . epic dim a . sf ct . core . model . Special ty Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Element Ċ Ċ /** Ċ Ġ* Ġ@ author ĠE pic Dim a Ċ Ġ*/ Ċ internal Ġclass ĠEx search Parser Ġ: ĠHtml Parser < List < Inst itution >> Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġparse ( html : ĠString ) Ġ= ĠJ soup . parse ( html ) ĊĠĠĠĠĠĠĠ Ġ? . select First (" div . catalog ") ĊĠĠĠĠĠĠĠ Ġ? . select (" div . catalog _ item ") ĊĠĠĠĠĠĠĠ Ġ? . map (:: parse Inst itution ) ĊĠĠĠĠĠĠĠ Ġ? . filter Ġ{ Ġit . name . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġempty List () ĊĊĠĠĠ Ġprivate Ġfun Ġparse Inst itution ( element : ĠElement ) Ġ= ĠInst itution ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġelement . select First (" h 3 "). text (), ĊĠĠĠĠĠĠĠ Ġspecial ties Ġ= Ġelement . select (" table . search _ result Ġ> Ġtbody Ġ> Ġtr ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Indexed Ġ{ Ġindex , Ġitem Ġ-> Ġ( index Ġ% Ġ 2 Ġ== Ġ 1 ) Ġ&& Ġ( item . children Size () Ġ== Ġ 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map (:: parse Special ty ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġparse Special ty ( element : ĠElement ): ĠSpecial ty Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġelement . children () ĊĠĠĠĠĠĠĠ Ġreturn ĠSpecial ty ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġchildren [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. child ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġchildren [ 1 ]. text (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfac ulty Ġ= Ġchildren [ 0 ]. text () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }