Buscar este blog

miércoles, 5 de septiembre de 2012

Leer URL


     Una forma sencilla pero flexible de leer en perl el contenido de una url es hacer uso del módulo LWP::UserAgent.
     El siguiente ejemplo muestra cómo leer el contenido de la url http://www.ejemplo.com:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl -w
 
use strict;
use warnings;
 
use LWP::UserAgent;
use HTTP::Request;
 
 
my $agent = LWP::UserAgent->new(env_proxy  => 1,
                                keep_alive => 1,
                                timeout    => 30);
my $header = HTTP::Request->new(GET => $URL);
my $request = HTTP::Request->new('GET', $URL, $header);
my $respuesta = $agent->request($request);
 
# Comprueba el resultado obtenido en la respuesta recibida
if ($respuesta->is_success) {
    print "URL:$URL\nHeaders:\n";
    print $respuesta->headers_as_string;
    print "\nContenido:\n";
    print $respuesta->decoded_content();
} elsif ($respuesta->is_error) {
    print "Error:$URL\n";
    print $respuesta->status_line;
    print "Codigo de respuesta: " . $respuesta->code . "\n";
    die;
}
    Como vemos, de esta manera tenemos acceso por separado a los headers y al contenido de la respuesta. Además, podemos comprobar el código de respuesta en caso de error.
    Este procedimiento nos permite además especificar un usuario y clave en caso de que la url a la que se quiere acceder esté protegida:
$request->authorization_basic('usuario', 'clave');
    También podemos tener necesidad de especificar un timeout, enviar cookies o adaptar de algún otro modo nuestra solicitud HTTP. Los módulos LWP::UserAgent y HTTP::Request ofrecen métodos que implementan esta funcionalidad.

No hay comentarios:

Publicar un comentario