140 likes | 221 Views
Consultas ad-hoc de estatísticas disponíveis na Web. Idevan Gonçalves Freire Junior igfj@di.ufpe.br. Extrair a estrutura de uma home-page. Distinguir as classes url e webdoc . As url ’s são instâncias de strings com método get definido.
E N D
Consultas ad-hoc de estatísticas disponíveis na Web Idevan Gonçalves Freire Junior igfj@di.ufpe.br
Extrair a estrutura de uma home-page • Distinguir as classes url e webdoc. • As url’s são instâncias de strings com método get definido. • Elementos típicos da classe webdoc são paginas HTML. • Métodos de webdoc: url, modif, type, hrefs@(label).
Modelando a web • Classe url modela um documento como um objeto • “http://www.di.ufpe.br/~compint/” seria o id-term de um objeto da classe url • Método get para recuperar o documento: • “http://www.di.ufpe.br/~compint/”.get[ ] • get transforma uma página HTML em um objeto webdoc • Documentos recuperados têm a seguinte estrutura: • url::string [get =>webdoc] • webdoc[self =>url; author =>string; modif => string; type =>string; hrefs@(string)=>> url; error =>>string].
Consultando a web • Exemplo: • “http://www.di.ufpe.br/~compint” = ourUrl. • ourUrl:url. • ourServer = “www.di.ufpe.br/”. • X.get:ourPage :- X: ourUrl. • Y.get:ourPage :- X:ourPage[hrefs@( _ ) ->> Y], substr(ourServer, Y). • Recupera os links que estão no mesmo servidor • X:ourPage[hrefs@( _ ) ->> Y], substr(“mailto:”,Y). • Recupera todos os endereços de e-mail achados nas páginas visitadas
Web Skeleton • Um extrator web skeleton genérico para FLORID
NBA Skeleton Extractor • Para NBA: • root[src->>{nba}]. • nba = "http://www.di.ufpe.br/~streak/espn.sportszone.com/nba/statistics/1998/". • >> ls • nba3ptpct.html nbafgpct.html nbascoring.html teamstatoff.html • nbaassists.html nbaftpct.html nbasteals.html tmcompare.html • nbablocks.html nbarebound.html teamstatdef.html j= substr("/nba/statistics/1998/nba",Y). • y= substr("/nba/statistics/1998/",Y).
Operadores de expressões regulares • .* • uma linha de def • um exemplo simplissimo • \( • \)
Percorrendo as páginas • As tabelas com os líderes estatísticos estão nas páginas definidas porje que iniciam comnba(como previsto emy). • Logo, ?- nba..L. traz todas as páginas dos líderes estatísticos. • Assim podemos construir as tabelas estatísticas: T:tabela :- match(nba..L.get,"<pre>\(.*\n\)*</pre>","",T). <pre><b>Player Gp PTS AVG</b> Michael Jordan, Chi 82 2357 28.7 Shaquille Oneal, Lal 60 1699 28.3 ... Rod Strickland, Was 76 1349 17.8 </pre>
Consultas às tabelas estatísticas • Para se identificar os líderes estatísticos de um dos times faz-se (por exemplo): R:crqLal :- T:tabela, match(T,"\(.*Lal.*\)","",R). • Para se armazenar a quantidade de líderes de um determinado time em sua base, faz-se: ?- sys.strat.doIt[]. X[leaders->N] :- X=lal, N = count{R; R:crqLal}. • Definição dos times: • 2 linhas, ..., 1 linha