Web Crawlers
Web Atual x Web Semântica


  Alberto Trindade Tavares
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
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.
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.
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.
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>
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]
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]
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]
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.
Crawlers para a web semântica
Linked Data:
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]
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/>
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]
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]
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]
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.
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

Web Crawlers

  • 1.
    Web Crawlers Web Atualx Web Semântica Alberto Trindade Tavares
  • 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 WebCrawler • 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 WebCrawler  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 aweb 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 aweb 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 crawlerda 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-sourceimplementado 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 crawleropen-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 aweb 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.
  • 11.
    Crawlers para aweb semântica Linked Data:
  • 12.
    Crawlers para aweb 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 aweb 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 crawleropen-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 crawleropen-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 xWeb 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 xWeb 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