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:
<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:
#!/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?"; }
Bien, te doy una ayudita...
#!/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){
}
if($cont =~ m/is\s<b>([\w\s]*?)</i){
}
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:
#!/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){
}
if($Explorador =~ m/is\s<b>([\w\s]*?)</i){
}