Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use WWW::Mechanize;
- use HTML::TableExtract;
- use strict;
- use warnings;
- $|++; # no caché
- # Constantes ################################################################
- my $URL = 'http://onlae.terra.es/loteria/navidad07/PrincipalD.htm';
- my $fichero_de_salida = 'administraciones.txt';
- #############################################################################
- # Vemos si el usuario nos manda un argumento, o le informamos
- # de cómo funciona este programa
- # Hay dos formas de indicarlo: o números sueltos, separados por comas,
- # y/o un rango, separados por '..'.
- @ARGV or die "Uso: $0 [<número[,número,...]|<número>..<número>]\n";
- # Leemos los números indicados por el usuario
- my $numeros_a_buscar = shift @ARGV;
- # Lo evaluamos como una posible lista de números
- my @numeros_a_buscar = eval ($numeros_a_buscar);
- # Hacemos un bucle por todos ellos
- foreach my $numero ( @numeros_a_buscar ) {
- next if $numero > 84999; # Límites de números permitidos
- next if $numero < 0;
- obtener_datos_del($numero);
- sleep 3 + rand 3
- if $numero != $numeros_a_buscar[-1]; # Somos amables... esperamos
- }
- sub obtener_datos_del {
- my $numero = shift;
- print "Obteniendo información del número $numero...";
- my $mech = WWW::Mechanize->new(); # Nuestro robot
- $mech->agent_alias('Linux Mozilla'); # Vamos a despistar un poco
- $mech->get($URL)
- or die "ERROR: No me pude conectar al $URL\n";
- $mech->submit_form( # Solicitamos información
- with_fields => {'numero' => $numero},
- );
- $mech->success() # ¿Todo va bien?
- or die "ERROR: No pude hacer la petición para el número $numero\n";
- my $pagina = $mech->content(); # A ver qué tenemos...
- # Nos construímos el extractor de tablas y buscamos la que nos interesa
- my $tabla_extractor
- = HTML::TableExtract->new(
- headers => [qw(Admon. Domicilio Localidad Provincia Teléfono)],
- );
- $tabla_extractor->parse($pagina); # Adelante... parsea...
- my ($tabla) = $tabla_extractor->tables() # Tabla obtenida
- or die "ERROR: No encontré la tabla de Administraciones\n";
- # Extraemos información de la tabla
- # Y la guardamos en el fichero de salida
- open ADMON,">>$fichero_de_salida"
- or die "ERROR: No puedo añadir a $fichero_de_salida: $!\n";
- # Primero, una cabecera
- print ADMON "Administraciones con el número $numero:\n";
- # Luego, la información de la tabla
- foreach my $row ($tabla->rows) {
- print ADMON join(',', @$row), "\n";
- }
- close ADMON;
- print " Ok\n";
- }
- __END__
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
El fallo que me da en la terminal es este: