2. O que é um Web Crawler?
• Um Web crawler é um programa de
computador que navega pela World Wide
Web de maneira metódica e automatizada.
[Wikipedia]
Também conhecido como web spider, bots e scutter
3. Usos para Web Crawler
• No contexto da web atual, as principais funções
do crawler são:
Atualizar base de dados de motores de
buscas, através da coleta de informações sobre o que
está disponível nas páginas web públicas
• Links;
• Tags;
• Palavras-chaves;
• etc.
Exemplo: Googlebot, crawler da Google.
4. Usos para Web Crawler
Atender necessidades específicas como download de
imagens de um conjunto de páginas, sistemas de
downloads como Megaupload ou uma busca e
categorização de informações distribuídas entre
diversos sites;
Validação automatizada de código HTML de páginas;
Mineração de endereços de email a partir de
páginas, comumente utilizado para spam;
Entre outras.
5. Crawlers para a web atual
• Os web crawlers desenvolvidos em sua grande
maioria são voltados para a web tradicional, onde
temos o foco em documentos HTML que são
conectados através de hiperlinks.
6. Crawlers para a web atual
• Exemplos de crawlers que trabalham
sobre a Web atual:
Googlebot <http://www.googlebot.com/bot.html>
Scrapy <http://scrapy.org>
Nutch <http://nutch.org.br>
7. Googlebot
• Web crawler da Google desenvolvido em C++;
• Utilizado para a descoberta de páginas novas e
atualizadas para serem incluídas no índice da Google;
• Processo de rastreamento de páginas se inicia com
uma lista de URLs, gerada a partir de processos
anteriores, e a cada visita a uma dessas páginas, os
links (SRC e HREF) detectados são incluídos na lista de
páginas a serem atualizadas;
• Novos sites, alterações em sites existentes e links
inativos serão detectados e usados para a atualizar o
índice do Google.
[Google Inc]
8. Scrapy
• Framework open-source implementado em Python
para o desenvolvimento de aplicações de web
crawling;
• Fornece componentes para a seleção e extração de
dados a partir de fontes HTML e XML;
• XPath é utilizado para extrair os dados a partir de
páginas web, onde expressões XPath especificam
tags dos quais serão extraídos os dados;
• Suporte a download automático de imagens
associados com os itens extraídos;
[Insophia, 2007]
9. Nutch
• Web crawler open-source desenvolvido em Java;
• Permite encontrar links de páginas web de forma
automática, verificando links quebrados e criando cópias de todas
as páginas visitadas para pesquisas sobre elas;
• Definição de seeds do crawling em um arquivo de texto com as
URLs, e opcionalmente expressões regulares que especificam
domínio de páginas a serem buscadas;
• Interface por linha de comando para configurar o crawling, setando
parametros como diretório para armazenar o resultado do
crawling, número de threads para busca em paralelo, profundidade
da busca, etc;
• Possui arquitetura bastante modular, permitindo desenvolvedores a
criar plugins para recuperação, consulta e clusterização de dados;
[The Apache Software Foundation, 2004]
10. Crawlers para a web semântica
Motivação:
• Mais dados disponíveis na web representados por
padrões da web semântica;
RDF, OWL, etc.
• Iniciativas para a publicação de dados seguindo os
princípios do Linked Data;
Linked Open Data (LOD)
• Tecnologias de web semântica facilitam a integração
de dados a partir de múltiplas fontes.
12. Crawlers para a web semântica
Arquitetura geral dos crawlers para a Linked
Data:
1. Obter URI da fila
2. Abrir conexão e buscar
conteúdo
3. Processar e armazenar
conteúdo
4. Extrair novos links e
colocar na fila
5. Em intervalos definidos:
escalar URIs na fila
[Andreas Harth, Crawling and Querying Linked Data, 2010]
13. Crawlers para a web semântica
• Exemplos de crawlers que trabalham
sobre a Web Semântica/Linked Data:
LDSpider <http://code.google.com/p/ldspider/>
Slug <http://code.google.com/p/slug-semweb-crawler/>
Ontobroker RDF Crawler
< http://ontobroker.semanticweb.org/rdfcrawl/>
14. LDSpider
• Web crawler open-source para Linked Data
desenvolvido em Java;
• Busca de arquivos RDF na web de dados a partir de
URIs seed;
• Permite a extração de arquivos em diferentes
formatos, como RDF/XML e N-Quad;
• Fornece tanto uma interface por linha de comando de
fácil utilização, quanto uma API Java que permite
aplicações configurar e controlar os detalhes do
processo de crawling.
[Robert Isele, Andreas Harth, Jürgen Umbrich, and Christian Bizer. 2010]
15. Slug
• Web crawler open-source projetado para extrair conteúdo
da web semântica, implementado em Java usando a API
Jena;
• Fornece um framework modular e configurável que
permite controlar a recuperação, processamento e
armazenamento do conteúdo explorado;
• Recuperação multi-threaded de dados RDF via HTTP e
criação de um cache local de dados extraídos;
• A API Jena permite usar consultas SPARQL para gerar
relatórios a partir da memória do crawler, obtendo
informações como recursos que geraram mais
triplas, histórico de crawl para dado recurso, etc.
[Leigh Dodds, leigh@ldodds.com, February 2006]
16. Ontobroker RDF Crawler
• Web crawler open-source desenvolvido em Java que
permite fazer download de fragmentos interconectados de
RDF – tanto de arquivos RDF puro quanto embutido no
HTML – da web de dados;
• Manutenção de uma lista de URIs para serem recuperadas
durante o crawling;
• Filtragem de URIs através da especificação de domínios, de
prefixo da URI, por extensão de arquivos
(HTML, RDF, etc.), entre outras;
• Assim como o LDSpider, é fornecida uma aplicação console
e uma API embutida que permite o desenvolvimento de
novas aplicações de crawling.
[Kalvis Apsitis, kalvis.apsitis@dati.lv, DATI Software Group, 2000]
17. Web atual x Web semântica
• Os crawlers para a web semântica se diferem dos
crawlers para a web tradicional no que se refere
a:
Formato das fontes que são buscadas;
Especificação dos links entre recursos de informação
na web.
Crawlers tradicionais trabalham sobre documentos
HTML, enquanto Crawlers para a web semântica
trabalham sobre metadados RDF com implementação
de links usando relacionamentos como rdfs:seeAlso.
18. Web atual x Web semântica: crawlers
Crawler Web Open Tipo Plataforma Linguagem Formato das
Semântica Source de Implem. Fontes
GoogleBot Aplicativo Linux C++ HTML
Scrapy Framework Windows/Linux Python HTML/XML
Nutch Aplicativo Windows/Linux Java HTML
LDSpider Aplicativo/API Windows/Linux Java RDF
Slug Framework Windows/Linux Java RDF
OntoBroker Aplicativo/API Windows Java HTML/RDF