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