Caríssimos leitores, este tutorial tem como objectivo explicar em que consiste um webcrawler (agente de varrimento), como se implementa e em que contexto são mais usados.
Introdução
Nos dias de hoje as webpages são cada vez mais modernas, tentam manter-se actualizadas e no topo das pesquisas da maioria dos utilizadores. Uma webpage que está no ranking das pesquisas certamente será beneficiada.
Para que tudo isso aconteça, existem os mecanismos de pesquisa, estes são definidos como uma base de dados capaz de encontrar resultados baseados em palavras ou termos escritos pelos utilizadores.
Existe software capaz de efectuar todos este processo, ao qual chama-mos de robots (spiders ou crawlers).
Mas qual a diferença entre um crawler e um spider? Segue um resumo dos dois baseado em algumas páginas espalhadas pela internet.
Crawler
É um software desenvolvido para realizar um varrimento na internet de maneira sistemática através de informação vista como relevante, de acordo com a sua função. Eles capturam os textos das páginas e guardam os links encontrados e assim possibilitam encontrar novas páginas.
São uma das bases das Search Engines, eles são os responsáveis pela indexação dos sites, armazenando-os na base de dados dos motores de busca. Também são conhecidos como Spider ou Bot (robot).
O processo que um Webcrawler executa é chamado de Web crawling ou spidering. Muitos sites, em particular os motores de busca, usam crawlers para manter uma base de dados actualizada.
Os Web crawlers são principalmente utilizados para criar uma cópia de todas as páginas visitadas, para um pós-processamento por um motor de busca que irá indexar as páginas descarregadas para prover buscas mais rápidas. Crawlers também podem ser usados para tarefas de manutenção automatizadas em um website, como “checar” os links ou validar o código HTML.
Os crawlers também podem ser usados para obter tipos específicos de informação das páginas da Web, como minerar endereços de email (mais comummente para spam).
Bom, os crawlers geralmente procuram informações sobre permissões sobre o conteúdo. Em especial existem duas formas de bloquear um crawler decente de indexar uma determinada página (e os links nela contidos).

A primeira forma, e mais comum, é através do arquivo robots.txt.

(Pode ser consultado o link do blog para este assunto em:
http://infptavares.blogspot.pt/2013/11/como-melhorar-indexacao-do-seu-siteblog.html )

A outra forma é através da tag meta robots, com valor “noindex” ou “nofollow“, usados para não indexar (a própria página) e não seguir (os links contidos na página), respectivamente. Há também uma terceira possibilidade, muito menos explorada, que é o uso do atributo rel=”nofollow” em links, indicando ao crawler que aquele link em especial não deve ser seguido.
Tudo isto são padrões que ajudam e facilitam na implementação destes pequenos agentes.
Spider
Também conhecido como Robot, Bot ou Crawler. São programas usados pelos mecanismos de pesquisa para explorar a internet de maneira automática e fazer download de conteúdo web de sites web. De forma metódica, não expõe o conteúdo que julga irrelevante no código fonte dos sites, e armazena o resto na sua base de dados.
Deste modo, os mecanismos de pesquisa baseados em robots (spiders ou crawlers) que vasculham a Internet atrás de informações classificam as buscas de acordo com os links, e também os conteúdos encontrados nas páginas, como é o caso do maior site de pesquisas da web, o Google.
Segundo Thurow (2003), os robots executam três acções básicas:
1. Primeiro eles acham as páginas (processo chamado spidering ou crawling) e constroem uma lista de palavras e frases encontradas em cada página;
2. Com esta lista eles fazem uma base de dados e encontram as páginas exactas que devem procurar, inserindo o sítio vasculhado na base de dados geral, organizado pelas características encontradas em suas páginas. A máquina que insere a web-page na base de dados geral chama-se de indexer;
3. Depois disso o robot já está apto a encontrar esta web-page (já está na base de dados) quando o utilizador final digitar na pequisa uma palavra ou expressão relativa ao conteúdo encontrado na web-page. Essa etapa é chamada query processor.
Como podemos perceber, por trás de qualquer pesquisa realizada na internet, há uma série de mecanismos que trabalham unidos para fornecer um resultado satisfatório ao utilizador.
Implementação de um Web-Crawler (Agente)
Neste momento já sabemos em que consiste um webcrawler e quais as suas tarefas na internet. Na maior parte, eles são usados para efectuar determinados varrimentos a páginas web. Lembrar que, é necessário que o utilizador seja cooperativo, e cumpra algumas regras nos seus sites ou blogs pessoais.
Como melhorar a indexação do seu site/blog [Robots.txt e Sitemap]

http://infptavares.blogspot.pt/2013/11/como-melhorar-indexacao-do-seu-siteblog.html
Poderá consultar o link disponibilizado e navegar até ao tutorial no blog.

Bem, a ideia neste momento é perceber como podemos criar um pequeno crawler para nos facilitar a vida em determinadas tarefas, e a minha proposta é a seguinte.

-Criação de um pequeno crawler que notifique o utilizador da música que está a passar no momento numa estação de rádio (RFM), e que automaticamente reproduza também essa música“.
Na verdade isto é mesmo assunto de crawler, e parece-me um exemplo “motivador” para o leitor.
Para a construção deste agente vai ser usado o vb.net da Microsoft. Poderia usar outra linguagem, p.e Python, mas na verdade, dot.net é extremamente eficiente e rápido na projecção e desenvolvimento deste tipo de aplicativos.

Para a construção deste exemplar e simplista web-crawler necessitamos de fazer os seguintes passos:

1. Efectuar um web-request à pagina alvo (http://rfm.sapo.pt/ ).
2. Descarregar o source-code (código-fonte) da página alvo.
3. Encontrar determinada tag (música a ser transmitida no momento).
4. Encontrar o link do streaming e correr no crawler (para reproduzir a emissão automaticamente).

5. Implementar um processo daemon para ir actualizando o ponto 3.

Para tal, basta criar um projecto no visual basic, e no form criado automaticamente por defeito (Form1.vb) definir um layout semelhante ao apresentado a baixo.

Em seguida, dar dois cliques no botão “Capturar Música” e abrir a tela de código no evento “OnClick” do botão.

Neste ponto, estamos aptos para efectuar o passo 1 definido no inicio do tutorial, o request ao código fonte da página alvo. Vamos a isso.
Adicionar a seguinte linha de código para o request do source.
Dim sourceString As String = New System.Net.WebClient().DownloadString(“http://rfm.sapo.pt/”)
Neste momento tudo OK, não existe erros no nosso código, o passo 1 definido foi concretizado.
O próximo passo, neste exemplo será ir até ao código-fonte do endereço alvo e verificar as tags que são do nosso interesse.

Dando uma olhada no código com um pouco de zoom.

Os passos a realizar para a extração do texto assinalado na imagem é a seguinte:

1. Procurar a tag autorNoAr“.
2. Guardar a string “texto de interesse“.
3. Encontrar um marcador (</span>) para terminar o varrimento.

Com estes três passos conseguimos obter o artista e o nome da música. O código para esta operação vem a seguir.

Foram declaradas duas variáveis “artista” e “musica” para salvaguardar o texto de interesse.
Em seguida, foi localizada a tag autorNoAr“, através do método IndexOf da string. Este método devolve um inteiro, isto é, a posição inicial da string de pesquisa. O próximo passo será fazer o realocamento da string e definir a tag “final”. Por fim, basta guarda o valor capturado, o nome do artista.
O mesmo processo é repetido para o nome da música. No final o resultado é concatenado e enviado para a label.text no formulário.

Como podem confirmar o crawler fez o seu trabalho. Não foi nada complicado e por vezes são estes pequenos agentes que nos facilitam o trabalho na maioria das tarefas.
Poderá ser-se criativo e em vez do botão criado em cima, colocar o código dentro de um timer e ele ser chamado de 30 em 30 segundos. Aqui, é o programador que terá de ser criativo.
Nota: Disse que colocava também o audio da emissão, vou deixar ao critério dos interessados.
Deixo o código exemplo e o artigo em pdf para download.
-> Link do pdf.

Alguma dúvida, comente.
Boa Continuação!

——————
O porquê de tutoriais em português?

Na sua maior parte, a internet está cansada de partilhar tutoriais em inglês.

—————–
Artigos relacionados: