Skip to content

Criando um Webcrawler simples em perl

23 janeiro 2013

Webcrawlers

Segundo a Wikipédia, um Webcrawler (ou WebSpider, WebRobot, etc) é um programa de computador que navega na internet de uma forma automatizada. Seja qual for o motivo que você tem para criar esses robôs coletores de dados, o ponto é que eles são bem úteis.

E em Perl é muito fácil criar um deles. Lembrando que há outras maneiras e módulos de fazer isso, não quero entrar no mérito de qual é o melhor, esse post é só uma maneira de abordar o assunto.

Instalação

O módulo que vou usar é o WWW::Mechanize. Para quem já conhece Perl, com um comando você instala esse módulo no seu sistema:

$ cpan WWW::Mechanize

Para quem não conhece Perl, CPAN, ou mesmo nunca programou na vida, esse site tem tutoriais de todos os passos para você começar a programar em Perl.

Meu primeiro crawler

Eu começo informando meu programa que vou usar alguns módulos, estou usando também o Data::Dumper para facilitar a saída dos dados, porém seu uso é opcional.

#!/usr/bin/perl -w
#Libs
use strict;
use warnings;
use WWW::Mechanize;
use Data::Dumper;

Definindo a url que vou acessar e inicializando a classe principal do meu robô:

my $url = "http://www.yahoo.com";
my $mech = WWW::Mechanize->new();

Chamando o método get() para coletar o conteúdo da página.

$mech->get($url);

Nesse momento o Mechanize já abriu o website do Yahoo, imagine que é como uma aba do seu navegador que está aberta.
A partir de agora eu posso fazer várias operações com essa “aba”, como por exemplo, ver seu conteúdo:

print Dumper($mech->content());

Baixe esse script aqui.

Melhorando

Além do content(), você pode usar outros métodos do Mechanize para seus próximos robôs, os mais usados são:

$mech->links(): Retorna os links da página.

$mech->find_link(): Procura um link na página.

$mech->set_fields(): Preenche um formulário.

$mech->click_button(): Simula um click do mouse num botão da página.

$mech->submit(): Envia o formulário.

Indo além

Bom, agora já sabemos abrir sites usando o método get() e ver o conteúdo do mesmo usando o content(), mas o Mechanize é muito mais que isso, ele preenche formulários, navega entre os links da página,  simula clicks em botões, e se você combiná-lo com outros módulos perl você pode exportar esses dados para vários formatos (csv, xml, json, etc), pode exportar a página para pdf, odt, ou o que sua imaginação mandar.

Uma das limitações do Mechanize é não poder disparar scripts JavaScript contidos na página, eu me deparei com esse problema quando fazia um robô para coletar dados de uma página que usava JavaScript no seu mecanismo de autenticação, mas há alternativas para isso, porém, é um assunto para outro post, té+😉

From → Perl, Programacao

2 Comentários
  1. Guilherme permalink

    Oi, meu nome é Guilherme, e eu preciso desenvolver um projeto de um robô para captura de informações.
    Preciso de consultoria nisto.
    Há interesse?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: