• Publicidad

Grep en web

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

Notapor joss » 2007-10-05 11:36 @525

Yo pensaba que si hacías esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$comando =~ s/ /+/g;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

quitabas el valor que le habías asignado a $comando cuando el <STDIN>.

Bueno la cosa está así... la búsqueda me la hace bien... Pero hay algo que falla y es que si encuentra la palabra lo que hace es imprimirte el código fuente de la página, no el párrafo. Y vamos que el código HTML es algo como esto.

Sintáxis: [ Descargar ] [ Ocultar ]
  1. hola me llamo pepito.<p> 


Vamos, que el script si está buscando la palabra 'hola', tiene que imprimir todo lo que viene después hasta encontrar un <p>.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Publicidad

Notapor kidd » 2007-10-05 13:18 @595

En ese caso entonces necesitas otro regexp, algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$doc = get ($host . $comando);

    if ( $doc =~ m/ Web(.*?)\<p\>/mosix ) {
        print "EXISTE - $1\n";
    }
    else {
        print "NO EXISTE\n";
    }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor joss » 2007-10-05 13:33 @606

Ahora me imprime bien, pero cuando la palabra no existe me imprime :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
EXISTE - as">

------------------------

Un trozo del código fuente

------------------------
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Se supone que si no existe tendría que decir "NO EXISTE"
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor explorer » 2007-10-05 15:24 @683

Si sale por "EXISTE", es que existe al menos una palabra "web".

Por lo que veo... alguna palabra que acaba en "...webas".
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2007-10-05 16:53 @745

Tiene razón explorer, eso lo podrías solucionar usando límites de palabras en tu expresión regular:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$doc =~ m/\bWeb\b(.*?)\<p\>/mosix
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor joss » 2007-10-06 05:00 @250

Teníais razón. Miré el código fuente de la página y me encontré la palabra terminada en 'as', por eso mismo no me funcionaba, pero ahora con '\b' en el if, ya me solucionó el problema.

Gracias.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor later » 2007-10-06 12:49 @576

Hola soy nuevo por aquí, y ya que está abierto este tema quiero preguntar sobre una duda que yo tengo.

Imaginemos que mediante la búsqueda que dice joss, encuentra la palabra.

E imprime todo lo que le sigue, hasta encontrar un <p> y en ese párrafo está por ejemplo este texto:

Web 'hola.pepe'

imprimiría lo que sigue después de Web: 'hola.pepe'. Pues yo quiero que dos variables guarden las palabra que hay entre unas comillas y separadas por un punto. Ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$palabra1 = "hola";
$palabra2 = "pepe";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Notapor explorer » 2007-10-06 13:25 @600

Bienvenido a los foros de Perl en Español, later.

Creo que es así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($palabra1, $palabra2) = $doc =~ m/Web.*?\'(.*?)\.(.*?)\'/simo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Con esto capturamos una vez. Podríamos quitar la palabra 'ancla' si sabemos que la combinación comilla-palabra-punto-palabra-comilla no se da en más lugares (es independiente de Web). Los capturadores (.*?) se podrían sustituir por (\w+) en el caso de que las palabras a capturar estuvieran formadas por caracteres alfanuméricos normales.

Vamos, que podría también ser así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
($palabra1, $palabra2) = $doc =~ m/\'(\w+)\.(\w+)\'/simo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor later » 2007-10-06 13:53 @620

Me funcionó con.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting

($palabra1, $palabra2) = $doc =~ m/\'(\w+)\.(\w+)\'/simo;

 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Gracias Explorer.
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Notapor joss » 2007-10-12 13:39 @610

Ahora lo estoy probando con el módulo LWP::UserAgent;

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

use LWP::UserAgent;
use HTTP::Request;

my $host=$ARGV[0];
my $comando=$ARGV[1];


my $ua = LWP::UserAgent->new;


$ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");

my $url = get ($host . $comando);


my $req = HTTP::Request->new(GET => $doc);
my $response = $ua->request($req);
my $doc = $response->content();

if ( $doc =~ m/\bColumna?\b(.*?)\<\/font>/mosix) {
   
print "EXITO";
}
else
{
print "Fallo";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Pero obtengo este resultado:

Código: Seleccionar todo
Undefined subroutine &main::get called at C:\Documents and Settings\User\Escritorio\x.pl line 15.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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

cron