Perl Regular Expressions (Regex)

Iniciado por ¨°o.O (ßa¢Kg|姧) O.o°, 5 Julio 2010, 20:40 PM

0 Miembros y 1 Visitante están viendo este tema.

¨°o.O (ßa¢Kg|姧) O.o°

Hola :)

Estoy haciendo un script en Perl para que haga un HTTP Post en una url, y cuando me logeo quiero cojer un trozo de texto y retocarlo para que quede concorde y no salgan todas las etiquetas del html etc..

El código que quiero cojer es este:

Código (html4strict) [Seleccionar]

    <td class="tm"><b>AQUI QUIERO COJER ESTO1</b><br>
Welcome back to your members area.<br><br>
Your username here is <b>AQUI QUIERO COJER ESTO2</b>.<br>

<script language="javascript" type="text/javascript">


Por supuesto que es un trozo de código del DOM de la página.
En todo caso quiero cojer lo que hay dentro del AQUI QUIERO COJER ESTO1 y del AQUI QUIERO COJER ESTO2

PD: Llevo aquí 2h y no lo consigo :S

Aquí pongo todo mi script:

Código (perl) [Seleccionar]
#!/usr/bin/perl
#=======================================================================
#
#
#  DESCRIPCIÓN:
#
#      OPTIONS:  ---
#         BUGS:  ---
#        NOTAS:  ---
#      VERSION:  1.0
#     CREADO:  Lunes 5 de julio del 2010
#    REVISIÓN:  1
#=======================================================================

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


   my $Explorador = WWW::Mechanize->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624' ); #Constructor del explorador con un UserAgent falso.
   $Explorador->get("file://home/alejandro/enter.php.html"); #Se procede a acceder a la dirección url para hacer el HTTP Post
   $Explorador->field('username','Miuser'); # Busca el campo username y pone el usuario
   $Explorador->field('password','Mipass');  # Busca el campo password y pone la contraseña
   $Explorador->submit(); # Hace el HTTP POST

   print $Explorador->content();
   
   if($Explorador->content() =~ m"\s/<td class=\"tm\"><b>")
      {
       
      }
   else
   {
     die "Error: No se puede encontrar el nombre.\n¿Ha provado que su usuario y contraseña sean correctos?";
    }



~ Yoya ~

Bien, te doy una ayudita...

Código (perl) [Seleccionar]
#!/usr/bin/perl -w

$cont = '     <td class="tm"><b>AQUI QUIERO COJER ESTO1</b><br>
Welcome back to your members area.<br><br>
Your username here is <b>AQUI QUIERO COJER ESTO2</b>.<br>

<script language="javascript" type="text/javascript">';

if($cont =~ m/m"><b>([\w\s]*?)<\//i){
print $1, "\n";
}
if($cont =~ m/is\s<b>([\w\s]*?)</i){
print $1, "\n";
}


Salida:
yoya@yoya-desktop:~/Escritorio$ perl a.pl
AQUI QUIERO COJER ESTO1
AQUI QUIERO COJER ESTO2


Osea, en vez de limpiar el texto, solo extraigo la parte que me interesa...

Si se lo adaptara, seria mas o meno asi:

Código (perl) [Seleccionar]
#!/usr/bin/perl
#=======================================================================
#
#
#  DESCRIPCIÓN:
#
#      OPTIONS:  ---
#         BUGS:  ---
#        NOTAS:  ---
#      VERSION:  1.0
#     CREADO:  Lunes 5 de julio del 2010
#    REVISIÓN:  1
#=======================================================================

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


    my $Explorador = WWW::Mechanize->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624' ); #Constructor del explorador con un UserAgent falso.
    $Explorador->get("file://home/alejandro/enter.php.html"); #Se procede a acceder a la dirección url para hacer el HTTP Post
    $Explorador->field('username','Miuser'); # Busca el campo username y pone el usuario
    $Explorador->field('password','Mipass');  # Busca el campo password y pone la contraseña
    $Explorador->submit(); # Hace el HTTP POST



if($Explorador =~ m/m"><b>([\w\s]*?)<\//i){
print $1, "\n";
}
if($Explorador =~ m/is\s<b>([\w\s]*?)</i){
print $1, "\n";
}
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.