Dom May 04, 2008 12:34 am
|
 |
netsoul
Perlero Nuevo

|
Registrado: 04 May 2008
Mensajes: 33
|
|
| Una petición HTTP de solo una parte de un recurso |
|
|
Hola, ¿cómo están?... Soy nuevo aquí y agradezco por tener esta oportunidad de ser un miembro de este prestigioso sitio.
Agradecido estoy y me gustaría resolver un problema.
Resulta que quisiera hacer una petición HTTP a un sitio y que me devuelva solamente un cierto contenido especifico.
Me había rebuscado en Google y he encontrado este sencillo código:
| Perl: | #!/usr/bin/perl -w
use strict;
use LWP:: UserAgent;
use HTTP:: Request;
my $ua = LWP:: UserAgent-> new;
$ua-> agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
my $url = "http://www.google.com/";
my $req = HTTP:: Request-> new(GET => $url);
my $response = $ua-> request($req);
my $content = $response-> content();
print $content; |
Como se puede observar en my $url le he añadido a Google como experimento.
Como resultado me devuelve un montón de código HTML. Mi pregunta es si la solución es solamente filtrando todo ese contenido HTML. Por ejemplo: si quiero que me devuelva el contenido "©2008 Google" solo usare una subrutina de filtro posterior al código y como resultado único: "©2008 Google".
La cuestión es si existe alguna otra posibilidad porque teóricamente todo ese contenido recibido semi-despreciable consumiría el ancho de banda.
Agradecido estoy y perdón si la pregunta está a medias.
Gracias. |
|
|
|

Dom May 04, 2008 3:55 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4036
Ubicación: Valladolid, España
|
|
|
|
|
Bienvenido a los foros de Perl en Español, netsoul.
De forma general, el protocolo HTTP devuelve el recurso entero, por lo que la respuesta a tu pregunta sería sí: hay que bajarse todo el recurso, toda la página, y luego filtrar por el contenido que quieres buscar.
Una forma más simple de hacerlo es con LWP::Simple:
| Perl: | use LWP:: Simple;
my $pagina = get ('http://www.google.com/');
print $pagina; |
Pero, no tiene porqué ser así. Si tienes alguna pista de en qué parte se encuentra lo que quieres, puedes agregar a la cabecera HTTP un atributo 'Content-Range' en la que le indicas esa parte (ver sección 14-16 del RFC 2616 del protocolo HTTP). Para hacer este tipo de peticiones, ya no te vale con el LWP::Simple. En http://perlenespanol.baboonsoftware.com/foro/viewtopic.php?p=11157#11157 tienes un ejemplo de petición con cabecera HTTP personalizada. |
|

Lun May 05, 2008 5:23 pm
|
 |
netsoul
Perlero Nuevo

|
Registrado: 04 May 2008
Mensajes: 33
|
|
|
|
|
Muy agradecido. Agradezco por el esfuerzo y ánimo. Es exactamente lo que estaba buscando. Una respuesta clara, precisa, perfecta y excelente.
Estaré mirando los códigos de ejemplos de petición HTTP con cabecera personalizada y también trataré de hacer algo parecido, aunque mi idea es algo simple.
Gracias. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|