• Publicidad

Problema con WWW::Mechanize

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problema con WWW::Mechanize

Notapor natxo » 2007-12-18 14:39 @652

Hola:

No lo entiendo, esto lleva funcionando casi 8 meses sin fallar ni un día y hoy ha fallado. Es un programilla que se conecta a la página de El País, se baja ciertos cómics y me los envía por correo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use strict;
use warnings;
use WWW::Mechanize;

my ($url,@links,$mech,$vineta);

$url = "http://www.elpais.com";

$mech = WWW::Mechanize->new(autocheck =>1);
$mech->get($url);

getlink("El Roto");
getlink("Romeu");
getlink("Forges");

# getlink() gets as first and only parameter the name of a cartoonist. It
# finds the link of the cartoon for that day.
sub getlink {
@links = $mech->find_link(
        tag => "a",
        text_regex => qr/.*$_[0].*/i,);

for (@links) {
     my $href = $_->url;
     $vineta = "$url$href";
    #print "$vineta\n";
    }
my $m = WWW::Mechanize->new(autocheck => 1);
$m->get($vineta);
my @links2 = $m->find_image( alt => "$_[0]", n => 2);
    if ($m->success){
        for (@links2){
            my $imageurl = $_->url;
            my $imagelink = "$url$imageurl";
            #print "imagelink\t$imagelink\n";
            $m->get("$imagelink", ":content_file" => "/tmp/$_[0].gif");
            use MIME::Lite;
            my $msg = MIME::Lite->new(
                    From => '[email protected]',
                    To => '[email protected]',
                    Subject => "$_[0]",
                    Type => 'multipart/mixed');
            $msg->attach(Type =>'TEXT', Data => "$_[0]");
            $msg->attach(Type => 'image/gif',
                        Path => "/tmp/$_[0].gif",
                        Filename => "$_[0].gif");
            $msg->send();
        }
    }
}
 
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


y el fallo que me da es:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
natxete@etch:~$ elpais.pl -D
Missing base argument at /usr/share/perl5/HTTP/Response.pm line 93
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


He mirado en este módulo pero la verdad no me dice mucho :(

También he comprobado los enlaces de el país y así a primera vista no parece que haya cambiado nada desde ayer (cuando sí funcionó). ¿Alguna pista?
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Publicidad

Notapor natxo » 2007-12-18 15:05 @670

Otro apunte:

He incluido un
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use LWP::Debug qw(+);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


como aconseja http://search.cpan.org/dist/WWW-Mechani ... pod#___top

y esto es lo que escupe la terminal:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
natxete@etch:~$ elpais.pl
LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
HTTP::Cookies::add_cookie_header: Checking www.elpais.com for cookies
HTTP::Cookies::add_cookie_header: Checking .elpais.com for cookies
HTTP::Cookies::add_cookie_header: Checking elpais.com for cookies
HTTP::Cookies::add_cookie_header: Checking .com for cookies
LWP::UserAgent::send_request: GET http://www.elpais.com
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::collect: read 745 bytes
LWP::Protocol::collect: read 4096 bytes
LWP::Protocol::collect: read 4096 bytes
LWP::Protocol::collect: read 4096 bytes
LWP::Protocol::collect: read 4096 bytes
LWP::Protocol::collect: read 4096 bytes
LWP::Protocol::collect: read 4096 bytes
LWP::Protocol::collect: read 2609 bytes
LWP::UserAgent::request: Simple response: OK
LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
HTTP::Cookies::add_cookie_header: Will not add cookies to non-HTTP requests
LWP::UserAgent::request: Simple response: Bad Request
Missing base argument at /usr/share/perl5/HTTP/Response.pm line 93
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Notapor explorer » 2007-12-19 01:02 @084

Pues es curioso...

Si hago un telnet www.elpais.com 80, y a continuación le pido que me pase la página por defecto:

Código: Seleccionar todo
GET / HTTP/1.1

me devuelve una página de error.

En cambio, si le paso algo más de información en la petición, sí que me devuelve algo:

Código: Seleccionar todo
GET / HTTP/1.1
Host: www.elpais.com


Según esta página, se arregló este problema con simplemente reiniciar los servidores. Pero no está claro de dónde viene.

Del segundo mensaje que publicas, da la sensación de que sí ha respondido bien (LWP::Protocol lee un montón de bytes), pero el Simple response es de Bad Request. Si la respuesta que manda es la misma que me sale a mí el error, entonces es natural que Base no tenga ningún valor y por eso falle. Lo que me extraña es que por ese detalle falle.

Sigo mirando...
Última edición por explorer el 2007-12-19 12:46 @574, editado 3 veces en total
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

ha vuelto a funcionar

Notapor natxo » 2007-12-19 08:32 @397

????

Hoy ha vuelto a funcionar.

En fin, algo no funcionaba bien en la página de El País, por lo visto. Veremos si en el futuro me sigue funcionando :)
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 17 invitados

cron