Web Crawlers Open Source Heitor de Souza Ganzeli Analista de Projetos do nic.br O Comitê Gestor da Internet no Brasil (CGI.br) foi criado pela Portaria Interministerial nº 147, de 31 de maio de 1995, alterada pelo Decreto Presidencial nº 4.829, de 3 de setembro de 2003, para coordenar e integrar todas as iniciativas de serviços Internet no país, promovendo a qualidade técnica, a inovação e a disseminação dos serviços ofertados. O NIC.br é uma instituição sem fins de lucro, que funciona como braço executivo do CGI.br Nomes de domínio .br Números IP Segurança na Internet brasileira Indicadores Infraestrutura sobre uso das PTTs TICs IPv6 SIMET = medição de qualidade Estudo da Web Zappiens Padrões Web Crawlers • INTRODUÇÃO • CRAWLERS Projetos Relacionados Introdução Agenda • PROJETOS RELACIONADOS Funcionamento Relacionados Projetos Crawlers Introdução Introdução Crawlers • Iniciado em 2009 • Publicação de dados do domínio .gov.br em 2010 Funcionamento Relacionados Projetos Introdução Projeto TIC Web • http://www.ceptro.br/ CEPTRO/MenuCEP TROSPCensoWeb Funcionamento Relacionados Projetos Crawlers Introdução O que é um Web crawler • Programa que navega de forma automática e ordenada a Web • Alguns sinônimos: • Spider • Bots • Robots • indexadores • Buscadores Ranking Interface de usuário Funcionamento Relacionados Projetos Crawlers Introdução Aplicações Web Broker Indexador Crawlers Índice Servidores • Buscadores Ranking Interface de usuário Funcionamento Relacionados Projetos Crawlers Introdução Aplicações Web Broker Indexador Crawlers Índice Servidores Funcionamento Relacionados Projetos Crawlers Introdução Como Funciona Seleção Lista Inicial Extração de links Download Funcionamento Relacionados Projetos Crawlers Introdução Limitações senha Funcionamento Relacionados Projetos Crawlers Introdução Desafios • • • • • Tamanho Obsolescência Qualidade Uso eficiente de recursos Controle Distribuído Funcionamento Relacionados Projetos Crawlers Introdução Alguns exemplos de web crawler Open source • • • • Wire Heritrix Wget Nutch Projetos Relacionados Crawlers Crawlers WIRE Introdução Projetos Relacionados Crawlers Introdução Características • Desenvolvido pelo CWR • Cunho acadêmico • Escalável • C/C++ • Altamente configurável • Foco em análise dos dados Introdução Arquitetura Projetos Relacionados Crawlers Manager Seeder Base de dados Gatherer Harvester Projetos Relacionados Crawlers Introdução Exemplo de configuração • Arquivo XML • Configuração centralizada Projetos Relacionados Crawlers Introdução Exemplo de execução export WIRE_CONF=/media/drive2/teste/sample.conf wire-bot-reset wire-bot-seeder --start /media/drive2/teste/list wire-bot-run 5 Projetos Relacionados Crawlers Introdução Exemplo de execução Projetos Relacionados Crawlers Introdução WIRE-NIC • Algumas correções: • Melhora do parsening de páginas • Suporte a HTTP1.1 • Melhora na identificação do encoding das páginas • Correção de alguns bugs de execução http://sf.net/projects/wire-nic Projetos Relacionados Crawlers Introdução Problemas • Relativamente lento • Storage único • Difícil de ser testado • Arquitetura unithead • Antigo Projetos Relacionados Crawlers Crawlers GNU WGET Introdução Projetos Relacionados Crawlers Introdução Características • Simples • Linha de comando • Download sequencial • Utiliza sistema de arquivos da máquina Projetos Relacionados Crawlers Introdução Controles de básicos • Limite de profundidade • Lista de domínios • Tipos de arquivos baixados • Tempo entre downloads • Substituir links Projetos Relacionados Crawlers Introdução Alguns exemplos • Baixar site: wget –r www.nic.br Projetos Relacionados Crawlers Introdução Alguns exemplos • Baixar site: wget –r www.nic.br Projetos Relacionados Crawlers Introdução Alguns exemplos • Adicionar delay: wget –r –w 2 www.nic.br Projetos Relacionados Crawlers Introdução Alguns exemplos • Baixar apenas páginas: wget –r –w 2 –A .html,.htm,.php www.nic.br Projetos Relacionados Crawlers Introdução Alguns exemplos Projetos Relacionados Crawlers Introdução Alguns exemplos Projetos Relacionados Crawlers Introdução Alguns exemplos • Baixar apenas páginas: wget -r -w 2 -R .gif,.png,.jpeg www.nic.br Projetos Relacionados Crawlers Crawlers HERITRIX Introdução Projetos Relacionados Crawlers Introdução Características • Internet Archive • Java • Componentes intercambiáveis • Scopo • Frontier – Gerenciador • Process Chains Introdução Arquitetura Interface Web Requisição de Crawling Projetos Relacionados Crawlers Controlador Frontier Nova URI URIs a serem executadas URIs já incluídas Adiciona novas URIs Conclui URI Process Chain Projetos Relacionados Crawlers Introdução Problemas • Difícil de ser configurado • Não se recupera bem de falhas • Fornece poucas ferramentas de análise Projetos Relacionados Crawlers Introdução Exemplo de execução Projetos Relacionados Crawlers Crawlers APACHE NUTCH Introdução Projetos Relacionados Crawlers Introdução Características • • • • • Apache foundation Parte do projeto Apache Solr Alta performace em clusters com hadoop Robusto Escalavel Projetos Relacionados Crawlers Introdução Arquitetura Injetor Gerador Buscador indexador Base de Crawling Base de links Atualiza repositório Inversot de links Filtros, normalizadores parser Projetos Relacionados Crawlers Introdução Exemplos de Execução Projetos Relacionados Projetos Relacionados Crawlers Introdução Projetos Relacionados Crawlers Introdução O ASA http://asa.nic.br Projetos Relacionados Crawlers Introdução Projeto Top Sites • http://labs.ceptro.br/topsites • Estatísticas sobre a lista dos top 1 milhão sites do Alexa Projetos Relacionados Crawlers Introdução Projeto BR Sites • http://labs.ceptro.br/brsites • Estatísticas sobre lista do .br baseada em consultas ao DNS do registro.br • Análise periódica de domínios específicos Projetos Relacionados Crawlers Introdução TIC Web • Como analisar o .com.br Crawlers Relacionados Motivação Sistema ProjetosFuncionamento Introdução Obrigado ! Perguntas? • Contatos: – [email protected] – [email protected] – [email protected] Crawlers Relacionados Motivação Sistema ProjetosFuncionamento Introdução referências – http://labs.ceptro.br/topsites – http://labs.ceptro.br/brsites – http://asa.nic.br – http://sf.net/projects/wire-nic – https://webarchive.jira.com/wiki/display/Heritrix/Heritrix – http://nutch.apache.org/ – http://www.gnu.org/software/wget/manual/wget.html – https://webarchive.jira.com/wiki/download/attachments/5441/Mohr-etal-2004.pdf – Distributed WR tutorial – Ricardo Baeza-yates – http://2010.berlinbuzzwords.de/sites/2010.berlinbuzzwords.de/files/bia lecki_bbuzz2010.pdf – http://wiki.apache.org/nutch/Presentations