Web Crawling - Arquitetura e Técnicas Utilizadas

Atualmente uma nova classe de usuários web trafega pela rede, mas nem todo o tráfego advém de atividade humana. Segundo dados da Imperva Incapsula (companhia que atua com uma plataforma de entrega de aplicativos baseada em nuvem), em 2016, cerca de 48,2% do tráfego presente na internet era humano enquanto que 51,8% pertencia aos robôs (bots). Dada uma grande e variada gama de programas que navegam automaticamente pela internet, existe um caso particular, chamado de "web crawler".


Índice
  1. Entendendo o que é um Web Crawler
    1. Funcionamento
      1. Fronteira do web crawler
      2. Baixador de páginas
      3. Repositório web
  2. Técnicas de web crawling
    1. Crawling de propósito geral
    2. Crawling focado
    3. Crawling distribuído
    4. Outras técnicas
  3. O que você aprendeu

Neste artigo, examinaremos o que é um web crawler, em que consiste sua arquitetura e quais técnicas são empregadas para o seu funcionamento.


Web Crawling e Técnicas Utilizadas
(Ilustração: adaptada de Freepik)

Entendendo o que é um Web Crawler

Para Patil e Patil (2016) “um web crawler é um bot de internet que consistentemente navega na World Wide Web, geralmente com o objetivo de indexação da web”. São, também, a principal parte de um mecanismo busca, navegando através de hiperlinks e armazenando links visitados para uso futuro. Mecanismos de buscas são divididos em muitos módulos, e o crawler é o módulo mais importante porque ajuda tanto na indexação quanto atualização das bases de dados para pesquisas.


Link: um link (abreviação de hiperlink) é um objeto HTML que permite ir para um novo local ao clicar ou tocar nele (TECHTERMS, 2020).

Funcionamento

Em tradução livre, “web crawler” pode ser entendido como rastreador da web. O resultado da web crawling é uma coleção de páginas web. Veja, abaixo, a arquitetura de um web crawler, ilustrada de maneira simplificada para compreensão de seu funcionamento.


Arquitetura simplificada de um Web Crawler
(Fonte: adaptado de Patil e Patil 2016)

A figura acima exibe um design generalizado de um web crawler. Consiste em três principais partes: fronteira, que contém uma lista de URLs para se visitar; um baixador de páginas, que realiza o download de páginas web e um repositório, que armazena conteúdo web em uma base de dados.


Fronteira do web crawler

A fronteira do web crawler consiste em uma lista de URLs a serem visitadas. Geralmente, a lista de URLs a serem visitadas são inseridas por uma pessoa ou por um programa, e a fronteira tem o papel de recuperá-las. A página equivalente é obtida da rede e os URLs não-visitadas dessa página são adicionadas na fronteira, novamente, criando um ciclo. Esse processo se repete até uma determinada condição ou até não haver mais links disponíveis. Os links a serem (re)visitados se baseiam em uma política bem definida.

 

URL: significa "Uniform Resource Locator" (localizador padrão de recursos). Um URL é o endereço de uma página da Web ou arquivo específico na Internet (TECHTERMS, 2020).


Baixador de páginas

É a parte responsável por realizar o download das páginas web. Necessita de um cliente HTTP para enviar requisições e receber a resposta do servidor. Ele também deve ser programado para contornar problemas, como URLs inválidas ou demora de tempo de resposta (timeout).


Repositório web

Essa parte armazena o conteúdo web que contém apenas páginas escritas em linguagem de marcação de hipertexto (HTML), contendo apenas o texto em arquivos distintos. Todos os tipos diferentes de mídia são ignorados. O armazenamento de páginas em um repositório local ajuda os mecanismos de busca a pesquisarem mais rapidamente e também identificar a maioria dos resultados aplicáveis à pesquisa de alguém.


Técnicas de web crawling

Kausar, Dhaka e Singh (2013) listam três principais técnicas usadas por web crawlers, que são: crawling de propósito geral, crawling focado e crawling distribuído. Iswary e Nath (2013) citam mais uma técnica, que é a do crawling incremental. Também podem ser agregadas a esta lista o crawling focado em formulário e o crawling paralelo, conforme Patil e Patil (2016). Ainda existem outras técnicas como o crawling contínuo e os resultados das combinações destas.


Técnicas de Web Crawling
(Ilustração: Freepik)

A princípio, só algumas técnicas serão comentadas, sem um nível exagerado de profundidade e detalhamento.

Crawling de propósito geral

Web crawlers de propósito de geral apenas se encarregam de manter uma coleção de páginas obtidas de um conjunto particular de URLs e seus links. Este tipo de crawler pode pesquisar muitas páginas, mas, em contrapartida, acaba sendo lento e consome muita largura de banda, já que é programado para pesquisar em todas as páginas.



Fluxograma genérico de um web crawler de propósito geral
(Fonte: adaptado de Patil e Patil 2016)

A figura acima exibe um algoritmo de um web crawler de propósito geral, em forma de fluxograma (também foi ilustrado na arquitetura de um web crawler anterior).


Crawling focado

“A finalidade do rastreador focado é buscar seletivamente as páginas que são apropriadas para um conjunto de assuntos pré-definido” (KAUSAR; DHAKA; SINGH, 2013). Essa arquitetura do sistema fica dividida em três componentes:

  • um classificador, que faz o julgamento das páginas rastreadas e decide para quais links expandir;
  • um destilador, que determina a prioridade de visita e relevância das páginas rastreadas e
  • o crawler, que dinamicamente reconfigura seus controles de prioridade, que são administrados pelo classificador e destilador, conforme a figura a seguir.

As páginas que são relevantes para um conjunto de tópicos predefinidos são procuradas dentro de um limite, evitando regiões irrelevantes na internet, através do uso de documentos exemplares.

Arquitetura de um web crawler focado
(Fonte: adaptado de Patil e Patil 2016)

Diferentes abordagens são usadas para construção de crawlers focados, como a estratégia de busca “Best First” e alguns também utilizam rank para classificação de páginas.


Crawling distribuído

É uma técnica de distribuição computacional. A crawling distribuído é caracterizada pela presença de muitos processos para a realização do rastreamento utilizando alguma outra técnica em específico. 


Um servidor central comanda e sincroniza os crawlers para que funcionem bem, enquanto estão geograficamente dispersos. A figura abaixo ilustra uma possível distribuição de N crawlers, dispersos em máquinas e talvez regiões diferentes, acessando a internet e navegando através de URLs válidas e inválidas para construção de uma base de dados.


Representação genérica de um crawling distribuído
(Fonte: adaptado de Patil e Patil 2016)


Outras técnicas

Existe, também, a técnica do crawler incremental. Para Patil e Patil (2016) “um crawler incremental é um dos rastreadores tradicionais que atualiza sua coleção e substitui periodicamente os documentos anteriores com os documentos recentemente baixados”. A vantagem desta técnica é que somente dados relevantes são fornecidos ao usuário, porém apenas um crawler pode ser executado por vez.


Uma outra técnica, segundo Kausar, Dhaka e Singh (2013) é o crawler paralelo em que “mecanismos de busca não dependem de apenas um, mas, sim, múltiplos web crawlers que rodam em paralelo para completarem seu objetivo”. Esses crawlers são conhecidos como C-procs, que  consiste em vários processos de rastreamento, que podem ser executados na rede de estações de trabalho, conforme Patil e Patil (2016).

O que você aprendeu

Vimos que crawlers são programas automatizados que acessam a internet, baixam páginas e as indexam em uma base de dados. São, também, partes fundamentais de mecanismos de busca com uma arquitetura focada em algumas técnicas, dependendo de seu propósito, como o crawling distribuído, paralelo, incremental, focado ou de propósito geral.

No próximo artigo construiremos um crawler de exemplo utilizando alguma dessas técnicas com a linguagem de programação Python.

Referência Bibliográfica
INCAPSULA. Bot Traffic Report 2016. Disponível em <https://www.incapsula.com/blog/bot-traffic-report-2016.html>. Acesso em 27 out. 2019.

ISWARY, R.; NATH, K. Web Crawler. International Journal of Advanced Research in Computer and Communication Engineering, v. 2, n. 10, p. 2278-1021, 2013.

KAUSAR, M. A.; DHAKA, V. S.; SINGH, S, K. Web crawler: a review. International Journal of Computer Applications, v. 63, n. 2, 2013.

MICROSOFT. Web Crawler Architecture. Disponível em <https://www.microsoft.com/en-us/research/wp-content/uploads/2009/09/EDS-WebCrawlerArchitecture.pdf>. Acesso em 27 out. 2019.

PATIL, Y.; PATIL, S. Review of Web Crawlers with Specification and Working. International Journal of Advanced Research in Computer and Communication Engineering. v. 5, 2016.

 

TECHTERMS. Link Definition. Disponível em <https://techterms.com/definition/link>. Acesso em 1 dez. 2020.


TECHTERMS. URL Definition. Disponível em <https://techterms.com/definition/url>. Acesso em 1 dez. 2020.



Para citar esse artigo:

Comentários

Postar um comentário