web crawler

13
ISRAEL JOSÉ DA CUNHA WEB CRAWLER Trabalho apresentado como requisto parcial à obtenção de nota na matéria de Sistemas Distri- buidos no curso de Sistemas de Informação na Universidade do Vale do Sapucaí – UNIVAS. : UNIVERSIDADE DO VALE DO SAPUCAÍ POUSO ALEGRE – MG 2014

Upload: israelcunha

Post on 16-Apr-2017

85 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Web crawler

ISRAEL JOSÉ DA CUNHA

WEB CRAWLER

Trabalho apresentado como requisto parcial àobtenção de nota na matéria de Sistemas Distri-buidos no curso de Sistemas de Informação naUniversidade do Vale do Sapucaí – UNIVAS.

:

UNIVERSIDADE DO VALE DO SAPUCAÍPOUSO ALEGRE – MG

2014

Page 2: Web crawler

ISRAEL JOSÉ DA CUNHA

WEB CRAWLER

Trabalho apresentado como requisto parcial àobtenção de nota na matéria de Sistemas Distri-buidos no curso de Sistemas de Informação naUniversidade do Vale do Sapucaí – UNIVAS.

:

UNIVERSIDADE DO VALE DO SAPUCAÍPOUSO ALEGRE – MG

2014

Page 3: Web crawler

LISTA DE CÓDIGOS

Código 1 Classe de extensão do WebCrawler. . . . . . . . . . . . . . . . . . . 8

Código 2 Exemplo de tipo de filtros. . . . . . . . . . . . . . . . . . . . . . . . 8

Código 3 Exemplo de carregamento de dados. . . . . . . . . . . . . . . . . . 9

Código 4 Exemplo de classe de controle. . . . . . . . . . . . . . . . . . . . . . 9

Page 4: Web crawler

LISTA DE SIGLAS E ABREVIATURAS

URL Uniform Resource Locator

HTTP Hypertext Transfer Protocol

Page 5: Web crawler

SUMÁRIO

INTRODUÇÃO .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 WEB CRAWLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1 Política de Crawling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Política de seleção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Politica de re-visita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Politica de Paralelização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5 Exemplo de Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

REFERÊNCIAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Page 6: Web crawler

INTRODUÇÃO

Para Boldi et al. (2004) Um rastreador Web começa com uma lista de URLs para visitar,

chamados de sementes. À medida que o crawler visita essas URLs, ele identifica todos os

links na página e os adiciona à lista de URLs para visitar, chamada de fronteira rastreamento.

URLs da fronteira são recursivamente visitado de acordo com um conjunto de políticas. Se o

rastreador está realizando arquivamento de sites ele copia e salva as informações de como ela

vai. Tais arquivos são normalmente armazenados de tal forma que eles podem ser vistos, lidos

e navegado como eram na web ao vivo, mas são preservados como "instantâneos".

O grande volume implica que o rastreador só pode baixar um número limitado de pági-

nas da Web dentro de um determinado tempo, por isso precisa priorizar seus downloads. A alta

taxa de mudança implica que as páginas já pode ter sido atualizado ou mesmo suprimido.

O número de possíveis URLs arrastou a ser gerado pelo software do lado do servidor

também tornou difícil para os crawlers para evitar a recuperação de conteúdo duplicado. Infini-

tas combinações de HTTP GET (baseado em URL) existem parâmetros, dos quais apenas uma

pequena seleção vai realmente voltar conteúdo exclusivo. Por exemplo, uma simples galeria

de fotos on-line pode oferecer três opções para os usuários, conforme especificado através de

HTTP GET parâmetros na URL. Se existem quatro maneiras de classificar imagens, três op-

ções de miniaturas tamanho, dois formatos de arquivo, e uma opção para desabilitar o conteúdo

fornecido pelo usuário, em seguida, o mesmo conjunto de conteúdo pode ser acessado com 48

URLs diferentes, todos os quais podem ser ligados em o site. Esta combinação matemática cria

um problema para os indexadores, como eles devem resolver através de infinitas combinações

de relativamente pequenas mudanças script, a fim de recuperar o conteúdo exclusivo.

Como Edwards et al. observou: "Dado que a largura de banda para realização rasteja

não é nem infinito nem livre, está se tornando essencial para rastrear a web, não só de forma

escalável, mas eficiente, se alguma medida razoável de qualidade ou frescura é ser mantido

". Um rastreador deve escolher cuidadosamente a cada passo que as páginas para visitar na

próxima.

Page 7: Web crawler

2 WEB CRAWLER

Segundo Ganjisaffar (2013), o web crawler em um rastreador que circula pela rede

mundial de computadores de forma automátizada e metódica, que copia os dados de uma página

alocando estes dados, para facilitar uma busca, o web crawler é utilizado normalmente em

motores de buscas de sites, como o YAHOO (Yahoo! Slurp), GOOGLE (Googlebot) e BING

(Msnbot). O web crawler também pode ser utilizado para outras finalidades como a abusca de

conteúdo específico dentro das páginas, como por exemplo email e redes sociais.

2.1 Política de Crawling

De acordo com Boldi et al. (2004) O comportamento de um rastreador Web é o resultado

de uma combinação de políticas:

• Uma política de seleção que afirma que as páginas de download;

• Uma política de re-visita que afirma quando para verificar se há alterações nas páginas;

• Uma política de paralelização que afirma como coordenar crawlers distribuídos.

2.2 Política de seleção

Segundo Diligenti et al. (2000), dado o tamanho atual da Web, até mesmo grandes mo-

tores de busca cobrem apenas uma parte da parte disponível publicamente. Um estudo de 2005

mostrou que em grande escala os motores de busca índice de não mais do que 40-70% da Web

indexável; Um estudo prévio por Steve Lawrence e Lee Giles mostrou que nenhum motor de

busca indexada mais de 16% da Web em 1999 . Como um rastreador sempre transfere apenas

uma fração das páginas da Web, é altamente desejável que a fração baixado contém as páginas

mais relevantes e não apenas uma amostra aleatória da web.

Ainda de acordo com o autor acima, Isso exige uma métrica importante para priorizar

páginas web. A importância de uma página é uma função da sua qualidade intrínseca, a sua

popularidade em termos de ligações ou visitas, e até mesmo de seu URL (o último é o caso dos

motores de busca verticais restritas a um único domínio de nível superior , ou motores de busca

Page 8: Web crawler

restrito para um site fixo). Projetando uma política de seleção de bom tem um agravante: é

preciso trabalhar com informações parciais, como o conjunto completo de páginas da Web não

é conhecido durante o rastreamento.

Para Cho e Page (1998) foi feito o primeiro estudo sobre políticas para rastreamento de

agendamento. Seu conjunto de dados foi um 180 mil páginas rastrear a partir do stanford.edu

domínio, em que uma simulação de rastreamento foi feito com estratégias diferentes. As métri-

cas de ordenação testados foram em largura , backlink parciais contagem e Pagerankcálculos.

Uma das conclusões foi que, se o rastreador quer baixar páginas com alta Pagerank cedo durante

o processo de rastreamento, então a estratégia Pagerank parcial é o melhor, seguido de busca

em largura e backlink-count. No entanto, estes resultados são para apenas um único domínio.

2.3 Politica de re-visita

De acordo com Zeinalipour-Yazti e Dikaiakos (2000) O objetivo do rastreador é manter

o frescor médio de páginas em seu acervo o mais alto possível, ou para manter a idade média

de páginas tão baixos quanto possível. Estes objectivos não são equivalentes: no primeiro caso,

o rastreador está apenas preocupado com quantas páginas são ultrapassados, enquanto que no

segundo caso, o rastreador está preocupado com quantos anos as cópias locais de páginas são.

2.4 Politica de Paralelização

Segundo Diligenti et al. (2000), um paralelo rastreador é um rastreador que executa

vários processos em paralelo. O objetivo é maximizar a taxa de download, minimizando a

sobrecarga da paralelização e evitar repetidas de downloads da mesma página. Para evitar o

download da mesma página mais de uma vez, o sistema de rastreamento requer uma política

de atribuição de novas URLs descobertos durante o processo de rastreamento, como o mesmo

URL pode ser encontrada por dois processos de rastreamento diferentes.

2.5 Exemplo de Código

Para Ganjisaffar (2013) fazer o rastreamento de páginas com o WebCrawler, é necessá-

rio criar uma classe que extenda o a classe de rastreamento do WebCrawler, está classe deve

7

Page 9: Web crawler

escolher quais as páginas devem ser rastreadas ou lidas e quais não deve ser rastreadas ou lidas.

O Código abaixo desenvolvido em java pode mostra um exemplo de como a classe de extensão

do WebCrawler pode ser implementada.

Código 1 – Classe de extensão do WebCrawler. Fonte: code.google.com/crawler4j

12 public class MyCrawler extends WebCrawler {34 private final static Pattern FILTERS = Pattern . compile5 (" .*(\\.( css|js|bmp|gif|jpe?g" + "|png|tiff ?| mid|mp2|mp3|mp4"6 + "|wav|avi|mov|mpeg|ram|m4v|pdf" + "|rm|smil|wmv|swf|wma|zip|

rar|gz))$");78 @Override9 public boolean shouldVisit ( WebURL url) {

10 String href = url. getURL (). toLowerCase ();11 return ! FILTERS . matcher (href). matches () && href.

startsWith ("http :// www.ics.uci.edu/");12 }1314 @Override15 public void visit(Page page) {16 String url = page. getWebURL (). getURL ();17 System .out. println ("URL: " + url);1819 if (page. getParseData () instanceof HtmlParseData ) {20 HtmlParseData htmlParseData = ( HtmlParseData )

page. getParseData ();21 String text = htmlParseData . getText ();22 String html = htmlParseData . getHtml ();23 List <WebURL > links = htmlParseData .

getOutgoingUrls ();2425 System .out. println ("Text length : " + text.

length ());26 System .out. println ("Html length : " + html.

length ());27 System .out. println (" Number of outgoing links:

" + links.size ());28 }29 }30 }

Para Ganjisaffar (2013) a função public boolean shouldVisit(WebURL url), é implemen-

tada para fazer um roteamento com base na lógica de ratremanento (crawled), para identificar

quais as URLs serão rastreadas e quais não serão rastreadas, esta função também não esta per-

mitindo que os arquivos de midia e de dados o viste, conforme o trecho de código abaixo.

Código 2 – Exemplo de tipo de filtros. Fonte: code.google.com/crawler4j

12 public class MyCrawler extends WebCrawler {34 // Cria o Filtro5 private final static Pattern FILTERS = Pattern . compile6 (" .*(\\.( css|js|bmp|gif|jpe?g" + "|png|tiff ?| mid|mp2|mp3|mp4"

8

Page 10: Web crawler

7 + "|wav|avi|mov|mpeg|ram|m4v|pdf" + "|rm|smil|wmv|swf|wma|zip|rar|gz))$");

89

10 @Override11 public boolean shouldVisit ( WebURL url) {12 String href = url. getURL (). toLowerCase ();1314 // Faz a negativa dos filtros15 return ! FILTERS . matcher (href). matches () && href.

startsWith ("http :// www.ics.uci.edu/");16 }

Para Ganjisaffar (2013) a função public void visit(Page page) , é chamada quando a

página já foi filtrada , rastreada/lida e já passou pelo carregamento, para que o programa utili-

zado possa processar é utilizar as informações. Deipois de baixar a URL com sucesso, podemos

obter url, textos, links, html e identificador único facilmente da página baixada, o fragmento de

código seguinte mostra com podemos fazer leitura de dados depois da página carregada.

Código 3 – Exemplo de carregamento de dados. Fonte: code.google.com/crawler4j

12 @Override3 public void visit(Page page) {4 String url = page. getWebURL (). getURL ();5 System .out. println ("URL: " + url);67 if (page. getParseData () instanceof HtmlParseData ) {8 HtmlParseData htmlParseData = ( HtmlParseData )

page. getParseData ();9 String text = htmlParseData . getText ();

10 String html = htmlParseData . getHtml ();11 List <WebURL > links = htmlParseData .

getOutgoingUrls ();1213 System .out. println ("Text length : " + text.

length ());14 System .out. println ("Html length : " + html.

length ());15 System .out. println (" Number of outgoing links:

" + links.size ());16 }17 }

Segundo Ganjisaffar (2013), poder amazenar os dados intermediários é necessário cria

uma classe de controle, que vai especificar quais os locais de rastreamento inícial, em qual pasta

vai ser amazenados os dados e o número de processo simultaneos. O Fragmento de código se-

guinte mostra um exemplo de implementação da classe controle.

9

Page 11: Web crawler

Código 4 – Exemplo de classe de controle. Fonte: code.google.com/crawler4j

12 public class Controller {3 public static void main( String [] args) throws Exception {4 String crawlStorageFolder = "/data/crawl/root";5 int numberOfCrawlers = 7;67 CrawlConfig config = new CrawlConfig ();8 config . setCrawlStorageFolder ( crawlStorageFolder );9

10 PageFetcher pageFetcher = new PageFetcher ( config );11 RobotstxtConfig robotstxtConfig = new RobotstxtConfig

();12 RobotstxtServer robotstxtServer = new RobotstxtServer (

robotstxtConfig , pageFetcher );13 CrawlController controller = new CrawlController (

config , pageFetcher , robotstxtServer );141516 controller . addSeed ("http :// www. univas .edu.br/menu/cpa/

apresentacao_cpa .asp");17 controller . addSeed ("http :// www. univas .edu.br/

portal_aluno .asp");18 controller . addSeed ("http :// www. univas .edu.br/");192021 controller .start( MyCrawler .class , numberOfCrawlers );22 }23 }

10

Page 12: Web crawler

3 CONCLUSÃO

Assim conclui-se que em um contexto amplo, o Web Crawler é um agente de Software,

que faz uma visita ás páginas bucando links e informações que possam ser utilizadas para inde-

xações das URLs, que por sua vez são acessadas recursivamente com base nas regras geradas

pelo Web Crawler.

O Web Crawler é de suma importância para a busca de novos conteúdos de maneira fácil

e rápida, visando manter os conteúdos das páginas dinâmicas sempre atualizados em sua base

de dados. Assim agilizando o processo de busca e indexação de dados na Web.

Page 13: Web crawler

REFERÊNCIAS

BOLDI, P. et al. UbiCrawler: A Scalable Fully Distributed Web Crawler. [S.l.]: Universitàdegli Studi di Milano, University of Iowa, Università di Modena e Reggio Emilia, 2004.

CHO, H. G.-M. J.; PAGE, L. Efficient crawling through URL ordering. [S.l.]: Proceedings ofthe Seventh World-Wide Web Conference, 1998.

DILIGENTI, M. et al. Focused Crawling Using Context Graphs. [S.l.]: Università di Siena,2000.

GANJISAFFAR, Y. Sample Usage. 2013. <https://code.google.com/p/crawler4j/>. Acessadoem 20/05/2014.

ZEINALIPOUR-YAZTI, D.; DIKAIAKOS, M. Design and Implementation of Distributed.[S.l.]: University of California, 2000.