SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
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
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
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
LISTA DE SIGLAS E ABREVIATURAS
URL Uniform Resource Locator
HTTP Hypertext Transfer Protocol
SUMÁRIO
INTRODUÇÃO ................................................................................ 5
2 WEB CRAWLER ................................................................ 6
2.1 Política de Crawling.............................................................. 6
2.2 Política de seleção ................................................................ 6
2.3 Politica de re-visita ............................................................... 7
2.4 Politica de Paralelização ......................................................... 7
2.5 Exemplo de Código............................................................... 7
3 CONCLUSÃO .................................................................... 11
REFERÊNCIAS................................................................................ 12
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.
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
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
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
1
2 public class MyCrawler extends WebCrawler {
3
4 private final static Pattern FILTERS = Pattern.compile
5 (".*(.( 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))$");
7
8 @Override
9 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 }
13
14 @Override
15 public void visit(Page page) {
16 String url = page.getWebURL ().getURL ();
17 System.out.println("URL: " + url);
18
19 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 ();
24
25 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
1
2 public class MyCrawler extends WebCrawler {
3
4 // Cria o Filtro
5 private final static Pattern FILTERS = Pattern.compile
6 (".*(.( css|js|bmp|gif|jpe?g" + "|png|tiff ?|mid|mp2|mp3|mp4"
8
7 + "|wav|avi|mov|mpeg|ram|m4v|pdf" + "|rm|smil|wmv|swf|wma|zip|
rar|gz))$");
8
9
10 @Override
11 public boolean shouldVisit(WebURL url) {
12 String href = url.getURL ().toLowerCase ();
13
14 // Faz a negativa dos filtros
15 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
1
2 @Override
3 public void visit(Page page) {
4 String url = page.getWebURL ().getURL ();
5 System.out.println("URL: " + url);
6
7 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 ();
12
13 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
Código 4 – Exemplo de classe de controle. Fonte: code.google.com/crawler4j
1
2 public class Controller {
3 public static void main(String [] args) throws Exception {
4 String crawlStorageFolder = "/data/crawl/root";
5 int numberOfCrawlers = 7;
6
7 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 );
14
15
16 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/");
19
20
21 controller.start(MyCrawler.class , numberOfCrawlers );
22 }
23 }
10
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.
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 of
the 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/>. Acessado
em 20/05/2014.
ZEINALIPOUR-YAZTI, D.; DIKAIAKOS, M. Design and Implementation of Distributed.
[S.l.]: University of California, 2000.

Mais conteúdo relacionado

Destaque

Module 4 healthcare system
Module 4 healthcare systemModule 4 healthcare system
Module 4 healthcare systemsmumbahelp
 
Suitable polymer suitable drug
Suitable polymer suitable drugSuitable polymer suitable drug
Suitable polymer suitable drugmohamed ghobashy
 
Mimic infotech Company Presentation R-1
Mimic infotech Company Presentation R-1Mimic infotech Company Presentation R-1
Mimic infotech Company Presentation R-1ABHIJIT UNDRE
 
Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...
Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...
Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...Łukasz Maźnica
 
Como Dormir Sin Roncar - Miguel McDonald
Como Dormir Sin Roncar - Miguel McDonaldComo Dormir Sin Roncar - Miguel McDonald
Como Dormir Sin Roncar - Miguel McDonaldMaria Fernanda Castillo
 
Building Structure Final report
Building Structure Final reportBuilding Structure Final report
Building Structure Final reportCanisius Bong
 

Destaque (11)

Projeto de Rede Local (LAN)
Projeto de Rede Local (LAN)Projeto de Rede Local (LAN)
Projeto de Rede Local (LAN)
 
Pré-projeto de um Trabalho de Conclusão
Pré-projeto de um Trabalho de ConclusãoPré-projeto de um Trabalho de Conclusão
Pré-projeto de um Trabalho de Conclusão
 
Projeto rede local
Projeto rede localProjeto rede local
Projeto rede local
 
Projeto de redes
Projeto de redesProjeto de redes
Projeto de redes
 
Module 4 healthcare system
Module 4 healthcare systemModule 4 healthcare system
Module 4 healthcare system
 
Suitable polymer suitable drug
Suitable polymer suitable drugSuitable polymer suitable drug
Suitable polymer suitable drug
 
Mimic infotech Company Presentation R-1
Mimic infotech Company Presentation R-1Mimic infotech Company Presentation R-1
Mimic infotech Company Presentation R-1
 
Testimonials
TestimonialsTestimonials
Testimonials
 
Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...
Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...
Działania a diagnozy - jak raporty badawcze wpływają na rozwój lokalnych cent...
 
Como Dormir Sin Roncar - Miguel McDonald
Como Dormir Sin Roncar - Miguel McDonaldComo Dormir Sin Roncar - Miguel McDonald
Como Dormir Sin Roncar - Miguel McDonald
 
Building Structure Final report
Building Structure Final reportBuilding Structure Final report
Building Structure Final report
 

Semelhante a Web Crawler para coleta de dados em sites

Buscas no IBM WebSphere Portal
Buscas no IBM WebSphere PortalBuscas no IBM WebSphere Portal
Buscas no IBM WebSphere Portalrodrigoareis
 
Otimizando seu Site para Alta Performance - ConaSearch
Otimizando seu Site para Alta Performance - ConaSearchOtimizando seu Site para Alta Performance - ConaSearch
Otimizando seu Site para Alta Performance - ConaSearchWilliam Rufino
 
Tudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o GoogleTudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o GoogleFelipe Bazon
 
A anatomia de um mecanismo de busca hipertextual de grande escala na web
A anatomia de um mecanismo de busca hipertextual de grande escala na webA anatomia de um mecanismo de busca hipertextual de grande escala na web
A anatomia de um mecanismo de busca hipertextual de grande escala na webfernandogallas
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPFlávio Lisboa
 
Marketing digital - Aula Google Analytics
Marketing digital - Aula Google AnalyticsMarketing digital - Aula Google Analytics
Marketing digital - Aula Google AnalyticsMaria Alice Jovinski
 
Site da copa avaliação web outubro 2013
Site da copa avaliação web outubro 2013Site da copa avaliação web outubro 2013
Site da copa avaliação web outubro 2013Hudson Augusto
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portaisFelipe Perin
 
Melhores Praticas de Busca WebSphere Portal 8
Melhores Praticas de Busca WebSphere Portal 8Melhores Praticas de Busca WebSphere Portal 8
Melhores Praticas de Busca WebSphere Portal 8Érick W. M. Vidal
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seointrofini
 
Tire o máximo de seu conteúdo no google
Tire o máximo de seu conteúdo no googleTire o máximo de seu conteúdo no google
Tire o máximo de seu conteúdo no googleFabio Santos
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesJackson F. de A. Mafra
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
 
Html - capitulo 04
Html - capitulo 04Html - capitulo 04
Html - capitulo 04Alvaro Gomes
 
Obtendo Informação Útil em Dados Semi-Estruturados da Web
Obtendo Informação Útil em Dados Semi-Estruturados da WebObtendo Informação Útil em Dados Semi-Estruturados da Web
Obtendo Informação Útil em Dados Semi-Estruturados da WebLuiz Matos
 

Semelhante a Web Crawler para coleta de dados em sites (20)

Buscas no IBM WebSphere Portal
Buscas no IBM WebSphere PortalBuscas no IBM WebSphere Portal
Buscas no IBM WebSphere Portal
 
Otimizando seu Site para Alta Performance - ConaSearch
Otimizando seu Site para Alta Performance - ConaSearchOtimizando seu Site para Alta Performance - ConaSearch
Otimizando seu Site para Alta Performance - ConaSearch
 
Tudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o GoogleTudo que Você Precisa Saber para Hackear o Google
Tudo que Você Precisa Saber para Hackear o Google
 
Asa cpbr4
Asa cpbr4Asa cpbr4
Asa cpbr4
 
A anatomia de um mecanismo de busca hipertextual de grande escala na web
A anatomia de um mecanismo de busca hipertextual de grande escala na webA anatomia de um mecanismo de busca hipertextual de grande escala na web
A anatomia de um mecanismo de busca hipertextual de grande escala na web
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
Marketing digital - Aula Google Analytics
Marketing digital - Aula Google AnalyticsMarketing digital - Aula Google Analytics
Marketing digital - Aula Google Analytics
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Site da copa avaliação web outubro 2013
Site da copa avaliação web outubro 2013Site da copa avaliação web outubro 2013
Site da copa avaliação web outubro 2013
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
 
Máquinas de busca
Máquinas de buscaMáquinas de busca
Máquinas de busca
 
Melhores Praticas de Busca WebSphere Portal 8
Melhores Praticas de Busca WebSphere Portal 8Melhores Praticas de Busca WebSphere Portal 8
Melhores Praticas de Busca WebSphere Portal 8
 
Copy of trabalho de redes
Copy of trabalho de redesCopy of trabalho de redes
Copy of trabalho de redes
 
O que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seoO que todos os developers devem saber sobre seo
O que todos os developers devem saber sobre seo
 
Tire o máximo de seu conteúdo no google
Tire o máximo de seu conteúdo no googleTire o máximo de seu conteúdo no google
Tire o máximo de seu conteúdo no google
 
Guia Webmasters Google
Guia Webmasters GoogleGuia Webmasters Google
Guia Webmasters Google
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicações
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
Html - capitulo 04
Html - capitulo 04Html - capitulo 04
Html - capitulo 04
 
Obtendo Informação Útil em Dados Semi-Estruturados da Web
Obtendo Informação Útil em Dados Semi-Estruturados da WebObtendo Informação Útil em Dados Semi-Estruturados da Web
Obtendo Informação Útil em Dados Semi-Estruturados da Web
 

Mais de IsraelCunha

Aquitetura dos Processadores Multicore
Aquitetura dos Processadores MulticoreAquitetura dos Processadores Multicore
Aquitetura dos Processadores MulticoreIsraelCunha
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cactiIsraelCunha
 
Avaliação de intreface da ferramenta
Avaliação de intreface da ferramentaAvaliação de intreface da ferramenta
Avaliação de intreface da ferramentaIsraelCunha
 
Algoritimo de threads
Algoritimo de threadsAlgoritimo de threads
Algoritimo de threadsIsraelCunha
 
Processadores multicore
Processadores multicoreProcessadores multicore
Processadores multicoreIsraelCunha
 
A importância dos sistemas de informações nas organizações
A importância dos sistemas de informações nas organizaçõesA importância dos sistemas de informações nas organizações
A importância dos sistemas de informações nas organizaçõesIsraelCunha
 
COCOMO E COCOMO II
COCOMO E COCOMO IICOCOMO E COCOMO II
COCOMO E COCOMO IIIsraelCunha
 

Mais de IsraelCunha (8)

Aquitetura dos Processadores Multicore
Aquitetura dos Processadores MulticoreAquitetura dos Processadores Multicore
Aquitetura dos Processadores Multicore
 
Mind map
Mind mapMind map
Mind map
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
 
Avaliação de intreface da ferramenta
Avaliação de intreface da ferramentaAvaliação de intreface da ferramenta
Avaliação de intreface da ferramenta
 
Algoritimo de threads
Algoritimo de threadsAlgoritimo de threads
Algoritimo de threads
 
Processadores multicore
Processadores multicoreProcessadores multicore
Processadores multicore
 
A importância dos sistemas de informações nas organizações
A importância dos sistemas de informações nas organizaçõesA importância dos sistemas de informações nas organizações
A importância dos sistemas de informações nas organizações
 
COCOMO E COCOMO II
COCOMO E COCOMO IICOCOMO E COCOMO II
COCOMO E COCOMO II
 

Web Crawler para coleta de dados em sites

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. LISTA DE SIGLAS E ABREVIATURAS URL Uniform Resource Locator HTTP Hypertext Transfer Protocol
  • 5. SUMÁRIO INTRODUÇÃO ................................................................................ 5 2 WEB CRAWLER ................................................................ 6 2.1 Política de Crawling.............................................................. 6 2.2 Política de seleção ................................................................ 6 2.3 Politica de re-visita ............................................................... 7 2.4 Politica de Paralelização ......................................................... 7 2.5 Exemplo de Código............................................................... 7 3 CONCLUSÃO .................................................................... 11 REFERÊNCIAS................................................................................ 12
  • 6. 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.
  • 7. 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
  • 8. 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
  • 9. 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 1 2 public class MyCrawler extends WebCrawler { 3 4 private final static Pattern FILTERS = Pattern.compile 5 (".*(.( 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))$"); 7 8 @Override 9 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 } 13 14 @Override 15 public void visit(Page page) { 16 String url = page.getWebURL ().getURL (); 17 System.out.println("URL: " + url); 18 19 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 (); 24 25 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 1 2 public class MyCrawler extends WebCrawler { 3 4 // Cria o Filtro 5 private final static Pattern FILTERS = Pattern.compile 6 (".*(.( css|js|bmp|gif|jpe?g" + "|png|tiff ?|mid|mp2|mp3|mp4" 8
  • 10. 7 + "|wav|avi|mov|mpeg|ram|m4v|pdf" + "|rm|smil|wmv|swf|wma|zip| rar|gz))$"); 8 9 10 @Override 11 public boolean shouldVisit(WebURL url) { 12 String href = url.getURL ().toLowerCase (); 13 14 // Faz a negativa dos filtros 15 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 1 2 @Override 3 public void visit(Page page) { 4 String url = page.getWebURL ().getURL (); 5 System.out.println("URL: " + url); 6 7 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 (); 12 13 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
  • 11. Código 4 – Exemplo de classe de controle. Fonte: code.google.com/crawler4j 1 2 public class Controller { 3 public static void main(String [] args) throws Exception { 4 String crawlStorageFolder = "/data/crawl/root"; 5 int numberOfCrawlers = 7; 6 7 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 ); 14 15 16 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/"); 19 20 21 controller.start(MyCrawler.class , numberOfCrawlers ); 22 } 23 } 10
  • 12. 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.
  • 13. 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 of the 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/>. Acessado em 20/05/2014. ZEINALIPOUR-YAZTI, D.; DIKAIAKOS, M. Design and Implementation of Distributed. [S.l.]: University of California, 2000.