• Publicidad

Content-Range

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Content-Range

Notapor netsoul » 2008-05-28 23:37 @025

Hola.

Después de tanta lucha he escrito mi código en Perl, pero aun así no sabría decir si mi idea es bien objetiva.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use LWP::UserAgent;
use HTTP::Request;


$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");


for($id=3506;$id<=3506;$id++){
        $host="http://www.sevillafc.es/noticias.php?id="."$id";
        $req = HTTP::Request->new(GET => $host);
        $response = $ua->request($req);
        $contenido = $response->content();
        print $contenido;
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Mi idea es solamente adquirir los 100 títulos de las noticias (rango 3506-3606) de cada "Id" e imprimirlos usando la cabecera 'Content-Range' para que así solamente baje ese recurso especifico.
Ejemplo:
Código: Seleccionar todo
-1. EL SEVILLA TRASPASA A BAPTISTA AL MADRID POR UN MONTANTE GLOBAL DE 24,5 MILLONES DE EUROS
-2. ENZO MARESCA: “VENGO PARA DARLE EQUILIBRIO AL EQUIPO”
-3. BAPTISTA SE DESPIDIÓ DE SUS COMPAÑEROS TRAS EL DESAYUNO ANTES DE VOLVER A ESPAÑA
.
.
.
-100....


Si podrían ayudarme, seré muy grato.

Gracias.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Publicidad

Notapor explorer » 2008-05-29 03:41 @195

Si suponemos que cada página, con su titular, está almacenada en una base de datos con un 'Id' único, quiere decir que solo voy a tener que bajarme la página una sola vez: almacenaré los títulos en mi ordenador para no tener que pedírselos a la base de datos cada vez. Con un módulo como Storable, o guardándolos en algo como una base de datos, arreglo el almacenamiento de los títulos.

Así, si solo voy a bajarme las páginas una sola vez, entonces puedo bajarme las páginas enteras (no es mucha molestia, ocupan menos de 30Kb cada una).

El usar el Content-Range está bien para no bajarlo todo, pero te arriesgas a no atinar con la posición en la que se encuentra el titular.

Además, bajar las páginas y extraer los titulares se puede hacer en muy poco espacio:

Código: Seleccionar todo
explorer@joaquin:~/Documents/Desarrollo> perl -MLWP::Simple -le 'my $s = get("http://www.sevillafc.es/noticias.php?id=3506"); while ( $s =~ m{<strong>(.*?)</strong>}simog ) { $t = $1; next if $t =~ /[a-z]/; $t =~ s/^\s*//; $t =~ s/ *$//; print $t if $t}'
EL SEVILLA TRASPASA A BAPTISTA AL MADRID POR UN MONTANTE GLOBAL DE 24,5 MILLONES DE EUROS


Solo hay que meter esto en un bucle (dejándolo más bonito, claro), y guardar los titulares bajados en una base de datos o en una sistema persistente, como Storable o Cache::Cache o algo similar. La página te las bajado una vez y así no molestas a los del Sevilla F.C.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados