viernes, 5 de abril de 2013

Perl: Realizar una solicitud a una página web y descargarla

Perl: Realizar una solicitud a una página web y descargarla


Algunas veces, queremos trabajar con una copia de un sitio web y descargar la página.
Para hacerlo en Perl, se utilizan los módulos LWP::UserAgent y HTTP::Request.
A continuación un ejemplo resumido con una función que visita una página web y la guarda en un archivo de texto.
Este ejemplo, se probado utilizando un servidor Apache en la misma máquina.
En la línea

$ua->agent("Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0"); se

Se ha configurado la cadena correspondiente a un agente Firefox, esta cadena puede dejarse vacia o colocar una frase identificatoria para nuestro programa.

Se puede acceder a un listado de las cadenas o firmas que realizan los distintos tipos de navegadores en 
-->http://www.user-agents.org/

------------------------------ CORTAR AQUI ------------------------------
#!/usr/bin/perl -w
#######################################################
#Realizar una solicitud a una direccion web
#Recibir la respuesta y guardar en archivo
#######################################################

use strict;
use LWP::UserAgent;
use HTTP::Request;

my $urlP="http://127.0.0.1";
my $pathP="temporal.txt";
solicitarPagina($urlP,$pathP);

######################################################
# Trae la pagina y la guarda en un archivo 
######################################################
sub solicitarPagina{
 my ($urlBuscar,$archivo)=@_;
 ############################################
 my $ua=LWP::UserAgent->new;
 $ua->agent("Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0");
 
 #si tiene proxy habilitar esta linea
# $ua->proxy(['http','ftp'],'http://192.168.1.1:3128');

 my $req=HTTP::Request->new(GET=>$urlBuscar);
 my $response= $ua->request($req);
 my $content=$response->content();
 ############################################
 # abrir archivo segun parametro
 open(FH,">",$archivo);
 ############################################
 print FH $content;
 close(FH);
}

------------------------------ CORTAR AQUI ------------------------------

No hay comentarios:

Publicar un comentario