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 -wuse 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 recibidaif ($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