elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ordenar array perl y regex
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenar array perl y regex  (Leído 5,700 veces)
¨°o.O (ßa¢Kg|姧) O.o°

Desconectado Desconectado

Mensajes: 32



Ver Perfil
Ordenar array perl y regex
« en: 8 Julio 2010, 14:59 pm »

Hola :)

Estoy intentando cojer unos links y unas imagenes tal que queden así ordenado el array:

Dirección URL
Enlace de imagen
Dirección URL
Enlace de imagen


Así hasta que recorra el bucle y los encuentre todos.

Problemas:

No consigo que al recorrer el bucle los ponga ordenados y tampoco consigo que la expresión regular recoja el enlace de la imagen acuerdo a regex, los consigo todos pero todos los de la página.

Recojo los enlaces de las imagenes con $Explorador->find_all_images() del módulo WWW:Mechanize.

El tipo de html que esta especificado en el DOM de la página es este:

Código
  1.   <table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
  2.            <tr>
  3.  
  4.            <td>
  5.                <a href="http://valeptr.com/scripts/runner.php?PA=4749" target="_ptc" onclick="javascript:reloadpage(11)">
  6.                    <img src="http://valeptr.com/scripts/runner.php?REDIRECT=http%3A%2F%2Fwww.e-qoo2.net%2Fimages%2Fbanner2.gif&amp;hash=fc93bac327d1672abbe159e0a1fc17cd" alt="e-qoo2"   border="0">
  7.                </a>
  8.            </td>
  9.            </tr>
  10.            </table>
  11.  

Y  no consigo poner el link y la imagen que tiene debajo como he puesto arriba marcado en negrita.

Pongo todo el script en perl.

Código
  1. #!/usr/bin/perl    
  2. #<table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
  3. #            <tr>
  4. #
  5. #            <td>
  6. #               <a href="http://valeptr.com/scripts/runner.php?PA=4749" target="_ptc" onclick="javascript:reloadpage(11)">
  7. #                    <img src="http://valeptr.com/scripts/runner.php?REDIRECT=http%3A%2F%2Fwww.e-qoo2.net%2Fimages%2Fbanner2.gif&amp;hash=fc93bac327d1672abbe159e0a1fc17cd" alt="e-qoo2"   border="0">
  8. #                </a>
  9. #            </td>
  10. #           </tr>
  11. #            </table>
  12.  
  13. use WWW::Mechanize;
  14. use WWW::Mechanize::Sleepy;
  15. my $Explorador = WWW::Mechanize::Sleepy->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624', sleep => '1' );
  16. my @Array_PTC;
  17. $Explorador->get("file:/home/alejandro/Escritorio/1appsearch.php.html") #Proceed to access the URL to find all the links in emails
  18.     or die q{Ha ocurrido un error obteniendo la página http://valeptr.com/pages/1appsearch.php.html};
  19.  
  20. #print $Explorador->content();
  21. foreach my $link ( $Explorador->links, $Explorador->find_all_images()  )
  22. {
  23.    if ( my ($interesting) = $link->url =~ qr{scripts/runner\.php\?PA=})
  24. {
  25. push @Array_PTC, $link->url;
  26.     }
  27.    if ( my ($interesting) = $Explorador->find_all_images()=~ #Aqui expresión regular)
  28. {
  29. push @Array_PTC, $link->url;
  30.     }
  31. }
  32.  
  33. print "$_\n" for @Array_PTC;
  34.  

Resumiendo:
Consigo todos los enlaces que cumplen con el pattern scripts/runner\.php\?PA=
pero lo que consigo es:
    1.- Conseguir todos los enlaces de debajo de el enlace <img src=" ... "
    2.- Ordenar los enlaces para que queden link y debajo el enlace


Saludos,


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ordenar array perl y regex
« Respuesta #1 en: 8 Julio 2010, 19:11 pm »

No entiendo nada, explícate mejor, que es lo que quieres hacer y como estas tratando de hacerlo y si te ayudan por lo menos escribir que lo haz resuelto, porque si no dices nada es porque no haz resolvido nada...


En línea

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.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Ordenar array perl y regex
« Respuesta #2 en: 8 Julio 2010, 20:24 pm »

Ok, entonces el resultado sería algo como estó:

Dirección URL: :http://valeptr.com/scripts/runner.php?REDIRECT=http%3A%2F%2Fwww.e-qoo2.net%2Fimages%2Fbanner2.gif&amp;hash=fc93bac327d1672abbe159e0a1fc17cd
Enlace de imagen: :http://valeptr.com/scripts/runner.php?PA=4749

Veré que puedo hacer, aunque tal vez lo haga en PHP... :P  :silbar:
« Última modificación: 8 Julio 2010, 20:28 pm por shellroot@alex-laptop:~$ » En línea

Te vendería mi talento por poder dormir tranquilo.
¨°o.O (ßa¢Kg|姧) O.o°

Desconectado Desconectado

Mensajes: 32



Ver Perfil
Re: Ordenar array perl y regex
« Respuesta #3 en: 8 Julio 2010, 22:52 pm »

No entiendo nada, explícate mejor, que es lo que quieres hacer y como estas tratando de hacerlo y si te ayudan por lo menos escribir que lo haz resuelto, porque si no dices nada es porque no haz resolvido nada...

Haber mi idea es hacer un bucle en el cual aplicando expresiones regulares coja el enlace y la imagen que esta abajo , es decir, el enlace esta al principio y después ponga la imagen tal cual lo he puesto al principio del hilo y después  y las ponga en un array así:

   Enlace
   Imagen

Un ejemplo de como quiero hacerlo esta al principio del hilo, lo que tengo hecho es cojer el enlace aplicando expresiones regulares pero la imagen no lo se hacer para que se quede como he puesto arriba el array.

Espero haberme explicado,

Gracias por las molestias,

Saludos :)
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ordenar array perl y regex
« Respuesta #4 en: 8 Julio 2010, 23:44 pm »

Vaya vaya, lo eh logrado... Como me a costado pero lo he hecho!!!. Me a causado un dolor de cabesa pensando como lo podría organizar pero aquí lo tienes y algunos conejitos...

Vasta con declarar un modulo porque uno llama otro sin necesidad de declararlo...
Citar
yoya@yoya-desktop:~/Escritorio$ time perl a.pl

real   0m1.046s
user   0m0.292s
sys   0m0.016s
yoya@yoya-desktop:~/Escritorio$ time perl a.pl

real   0m0.994s
user   0m0.264s
sys   0m0.040s

El primero es con lo dos modulo y el segundo un solo...

Aqui el code:
Código
  1. #!/usr/bin/perl    
  2. #<table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
  3. #            <tr>
  4. #
  5. #            <td>
  6. #               <a href="http://valeptr.com/scripts/runner.php?PA=4749" target="_ptc" onclick="javascript:reloadpage(11)">
  7. #                    <img src="http://valeptr.com/scripts/runner.php?REDIRECT=http%3A%2F%2Fwww.e-qoo2.net%2Fimages%2Fbanner2.gif&amp;hash=fc93bac327d1672abbe159e0a1fc17cd" alt="e-qoo2"   border="0">
  8. #                </a>
  9. #            </td>
  10. #           </tr>
  11. #            </table>
  12.  
  13. #use WWW::Mechanize;
  14. use WWW::Mechanize::Sleepy;
  15. my $Explorador = WWW::Mechanize::Sleepy->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624', sleep => '0' );
  16.  
  17.  
  18. $Explorador->get("http://foro.elhacker.net/") #Proceed to access the URL to find all the links in emails
  19.     or die q{Ha ocurrido un error obteniendo la página http://valeptr.com/pages/1appsearch.php.html};
  20.  
  21. my @links = $Explorador->links();
  22. my @img = $Explorador->find_all_images(tag_regex => qr/^(img)$/i );
  23. foreach (@links){
  24. $links .= $_->url();
  25. $links .= " ";
  26. }
  27. foreach (@img){
  28. $img .= $_->url();
  29. $img .= " ";
  30. }
  31.  
  32. @url = split(/\s+/,$links);
  33. @images = split(/\s+/,$img);
  34. for($i = 0;$i <= 5;$i++){
  35. print "Url-> ".@url[$i], "\n";
  36. print "Img-> ".@images[$i], "\n";
  37. }

Salida:
Código:
yoya@yoya-desktop:~/Escritorio$ perl a.pl
Url-> http://foro.elhacker.net/.xml.html;sa=news;board=34;limit=10;type=rss
Img-> http://foro.elhacker.net/Themes/converted/selogo.jpg
Url-> http://foro.elhacker.net/Themes/converted/css/style.css
Img-> http://foro.elhacker.net/Themes/converted/der_logo.jpg
Url-> http://www.elhacker.net
Img-> http://foro.elhacker.net/Themes/converted/images/spanish/home.gif
Url-> http://foro.elhacker.net/login.html
Img-> http://foro.elhacker.net/Themes/converted/images/spanish/help.gif
Url-> http://foro.elhacker.net/register.html
Img-> http://foro.elhacker.net/Themes/converted/images/spanish/login.gif
Url-> http://foro.elhacker.net/activate.html
Img-> http://foro.elhacker.net/Themes/converted/images/spanish/register.gif

Pd: Si no entiendes algo me avisas por este mismo Post y responder el post si te a funcionado...

Saludos!
En línea

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.
¨°o.O (ßa¢Kg|姧) O.o°

Desconectado Desconectado

Mensajes: 32



Ver Perfil
Re: Ordenar array perl y regex
« Respuesta #5 en: 9 Julio 2010, 01:12 am »

Buenas he estado probando el código y con esta página funciona pero con la página web que quiero hacerlo funcionar no funciona:
   Le he añadido  url_abs_regex => pero no lo consigo.

El problema esta en que se muestran todos los enlaces y entonces al haber tantos enlaces por logica se acaban las imagenes y salen en blanco como en esta imagen.

Aqui coje todos los enlaces sin mirar la expresión regular





El problema está en que no coje bien la expresión regular.
PD: Gracias por el tips, esos tiempos de cpu hay que reducirlos al máximo
Gracias,
Saludos,

« Última modificación: 9 Julio 2010, 01:15 am por ¨°o.O (ßa¢Kg|姧) O.o° » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ordenar array perl y regex
« Respuesta #6 en: 9 Julio 2010, 03:46 am »

Tienes que leer un poco la documentación del modulo mechanize...

Tienes dos opción para aplicarle expresiones regulares al array que contiene los links y también el que contiene las imágenes.

Puedes usar url_regex => qr/regex/ tanto para links y imagenes...

O simplemente le aplicas expresiones regulares al array que contiene los links y imagenes...
Aplicando expresiones regulares a arrays

Para el otro problema, si existe mas links que imágenes o viceversa, puedes usar un if() o puedes crear una función y usar un poco de lógica xD.

Ej:
Código
  1. #!/usr/bin/perl
  2.  
  3. @numeros = qw(12 12 45 87 91 1);
  4. @letras = qw(sd sf ss aaaas);
  5.  
  6. if(scalar(@numeros) <= scalar(@letras)){
  7. for($i = 0;$i <= scalar(@numeros);$i++){
  8. print $i, "\n";
  9. }
  10. }else{
  11. for($i = 0;$i <= scalar(@letras);$i++){
  12. print $i, "\n";
  13. }
  14. }

Salida:
Código:
yoya@yoya-desktop:~/Escritorio$ perl s.pl
0
1
2
3
4
En línea

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
no entiendo porque pero no funciona ( ordenar array )
Programación C/C++
manutmac 6 4,561 Último mensaje 14 Noviembre 2012, 17:50 pm
por manutmac
ordenar array php
PHP
kakashi20 5 3,159 Último mensaje 28 Febrero 2013, 15:53 pm
por kakashi20
Ordenar un array de manera que queden del más cercano a M hasta el más alejado
Programación C/C++
maritere22 3 2,727 Último mensaje 10 Abril 2013, 17:17 pm
por rir3760
Ayuda para ordenar Array
.NET (C#, VB.NET, ASP)
bybaal 2 2,812 Último mensaje 15 Abril 2016, 12:37 pm
por bybaal
[C] Ordenar Array de STRUCT
Programación C/C++
n-utz 3 5,596 Último mensaje 24 Septiembre 2016, 19:08 pm
por n-utz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines