Brincando com Perl

Estou lendo o livro Spidering Hacks e estou gostando bastante!

O único “problema” do livro é que em Perl e eu nunca tinha ouvido falar dessa linguagem de script antes… Mas decidi aprender o básico e enfrentar as páginas do livro, o problema é que a linguagem é viciante :S O mesmo aconteceu comigo quando li sobre Lua e Python.
O die… unless é bem legal e útil. AS bibliotecas são muito fáceis de usar e o problema meu mesmo foi para pegar a hora o que é muito estranho, pois até em Java isso é facílimo!

Abaixo um pequeno script para monitorar URLs e gerar uma página simples. Assim você pode colocar um estagiário para ficar de olho😀.

use strict;
use LWP;
die "Você precisa informar a(s) URL(s)..." unless defined @ARGV;

my ($sec,$min,$hour,$day,$month,$yr19,@rest) =   localtime(time); #fonte: http://www.perlmonks.org/?node_id=659915
my $horas = sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec);

my $saida = "<title>Monitoramento de páginas</title>";
$saida .= "<h1>Monitoramento de páginas</h1>";
$saida .= "<br />";
$saida .= "<i>Monitoramento iniciado em $horas</i>";
$saida .= "<table border='1'><thead><tr></tr>";
$saida .= "<th>URL</th>";
$saida .= "<th>Sucesso?</th>";
$saida .= "<th>Resposta do servidor</th>";
$saida .= "<th>Data</th>";
$saida .= "</tr></thead><tbody>";

foreach (@ARGV){
	my $buscador = LWP::UserAgent->new;
	my $resposta = $buscador->get($_);
	($sec,$min,$hour,$day,$month,$yr19,@rest) =   localtime(time); #fonte: http://www.perlmonks.org/?node_id=659915
		
	$saida .= "<tr>";
	$saida .= "<td>$_</td>";
	if($resposta->is_success){
		$saida .= "<td style='background:green;'>Sim</td>";
	}else{
		$saida .= "<td style='background:red;color:white;'>Não</td>";
	}
	
	$saida .= "<td>".$resposta->status_line."</td>";
	$saida .= "<td>".sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec)."</td>";
	$saida .= "</tr>";
}
$saida .= "</tbody></table>";

open(ARQUIVO, ">",  "relatorio.html") or die "Não foi possível criar o arquivo de saída...";
print ARQUIVO $saida;
close(ARQUIVO);
($sec,$min,$hour,$day,$month,$yr19,@rest) =   localtime(time);
print "\n\nMonitoria terminada: ".sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec);

É claro que invés de ficar gerando essa página rídicula, você pode sei lá, abrir um chamado, enviar e-mail, etc… Para funcionar só agendar no seu sistema UNIX/LINUX/WINDOWS (não faça isso!) e enviar as URLs a serem monitoradas… Simples, não?

2 Respostas

  1. Estou pensando em comprar esse livro… para quem for usar outra linguagem, o livro ajuda? Porque imagino que devem ter conceitos de Xpath, Regex etc aplicáveis em qualquer linguagem (farei em PHP).
    Você recomenda esse livro?

    Grata!

    • Olá Natascha,

      Ajuda sim, dá uma boa noção de como fazer o scrapping, mas na leitura do livro é indispensável o uso de Perl.

      Abraços.

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: