• Publicidad

Extraer contenido y guardar en array

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Extraer contenido y guardar en array

Notapor jimr1984 » 2017-05-29 11:47 @533

saludos.

Espero puedan ayudarme con este problema a resolver.

Tengo este código HTML, el cual necesito extraer el valor de "id". Ejemplo: af9fcc5a872af09fcb36da6cbf56ee2c
Y guardarlos en un array para utilizarlos en otro método.
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <div class="right">
  2.                     <a href="ver-mas.php?id=af9fcc5a872af09fcb36da6cbf56ee2c&seccion=&division=&clase=&rubro=&depto=07&page=1&searchSW=1" class="link1">+ Ver más</a>
  3.                     </div>
  4.                     <span class="bold">" AGENCIA DESPACHANTE DE ADUANAS LOS ANGELES S.R.L. "                                                                                                                                                                                                        </span> en Santa Cruz     <br />
  5.                       Matr&iacute;cula: <span class="small3">ACTUALIZADA</span>
  6.                     </div>
  7.                                         <div class="empresas">
  8.                     <div class="right">
  9.                     <a href="ver-mas.php?id=e42afde8163eaec428b4c185136ba2c3&seccion=&division=&clase=&rubro=&depto=07&page=1&searchSW=1" class="link1">+ Ver más</a>
  10.                     </div>
  11.                     <span class="bold">" AGROINDUSTRIAS LUCANO S.R.L. "                                                                                                                                                                                                                             </span> en Santa Cruz     <br />
  12.                       Matr&iacute;cula: <span class="small3">ACTUALIZADA</span>
  13.                     </div>
  14.                                         <div class="empresas">
  15.                     <div class="right">
  16.                     <a href="ver-mas.php?id=92fc38d16022b61a0e0258132a8a0315&seccion=&division=&clase=&rubro=&depto=07&page=1&searchSW=1" class="link1">+ Ver más</a>
  17.                     </div>
  18.                     <span class="bold">" ALMACENES INTERNACIONALES S.A. (RAISA) "                                                                                                                                                                                                                   </span> en Santa Cruz     <br />
  19.                       Matr&iacute;cula: <span class="small3">ACTUALIZADA</span>
  20.                     </div>
  21.                                         <div class="empresas">
  22.                     <div class="right">
  23.                     <a href="ver-mas.php?id=04b6159e436556d86b70fd870e967ca2&seccion=&division=&clase=&rubro=&depto=07&page=1&searchSW=1" class="link1">+ Ver más</a>
  24.                     </div>
  25.                     <span class="bold">" BOLMARTEC S.R.L."                                                                                                                                                                                                                                          </span> en Santa Cruz     <br />
  26.                       Matr&iacute;cula: <span class="small3">ACTUALIZADA</span>
  27.                     </div>
  28.                                         <div class="empresas">
  29.                     <div class="right">
  30.                     <a href="ver-mas.php?id=5ec9f03b588412fc0e3912d1ac9aa0c6&seccion=&division=&clase=&rubro=&depto=07&page=1&searchSW=1" class="link1">+ Ver más</
  31.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Por favor, si alguien puede darme un ejemplo.

Gracias.
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Publicidad

Re: Extraer contenido y guardar en array

Notapor explorer » 2017-05-30 05:18 @262

Sería algo así, pero, te repetimos, necesitas aprender algo, aunque sea básico, de expresiones regulares.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @id = $html =~ /id=(.+?)\&/g;
Coloreado en 0.002 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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer contenido y guardar en array

Notapor jimr1984 » 2017-06-01 11:03 @502

Tengo una dudas.

Me sugieren esta línea: my @id = $html =~ /id=(.+?)\&/g;

¿No sería lo mismo si lo realizo con un while()?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @array = ();
  2. // peticion GET a la url  
  3. //guardo el response en una variable
  4. $resultado  = $response->content();
  5.  
  6. while ($resultado =~ m/(ver-mas.php\?id=)(.*)(&seccion)/gm)
  7. {
  8.   push(@array,$2);
  9. }
  10.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Según lo que entendí por lo sugerido debería ser así. ¿El $html tendría el todo el contenido html?

my @id = $html =~ /id=(.+?)\&/g)
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Extraer contenido y guardar en array

Notapor explorer » 2017-06-02 15:53 @703

Sí, el resultado se puede hacer con un while().

Y $resultado contiene toda la página. ¿No has hecho la prueba de sacarla en pantalla para ver qué contiene?

Cuidado con el operador avaricioso ".*": se "comerá" toda la línea e irá buscando hacia atrás. Es mejor usar la variante no-avariciosa ".*?\&", que quiere decir que "coma" todo lo que encuentre, pero que se pare justo antes del siguiente '&'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer contenido y guardar en array

Notapor jimr1984 » 2017-06-05 11:21 @514

Muchas gracias. Continuando este hilo, tengo este registro en un archivo .log

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
     19 [email protected] [190.180.51.110]
     19 [email protected] [200.58.127.19]
     19 [email protected]  (accentsmusic.org)
     20 [email protected] (PC1)
     20 [email protected] (72.2.95.11)
     20 [email protected]  (apata.ca)
     20 [email protected]  (distasio.net)
     20 [email protected]  (drengineers.co.in)
     20 [email protected]  (festas2009.tri44.triatahost.com)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Necesito extraer todas las direcciones de correo electrónico y contar aquellas que más se repiten.

Los dominios pueden ser:
*.* = com.bo, com.pe, com.edu., com.org || *.edu, *.org, etc. || .com , .bo, etc.

Estoy intentando para extraerlos algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ($log =~ m/(\w*@\w*.*)\s/mg) {
  2.  
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

La idea es contar los repetidos y separarlos en un arreglo.
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Extraer contenido y guardar en array

Notapor explorer » 2017-06-05 19:38 @860

Ya que las direcciones están detrás de un número, se podría usar algo como esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ($log =~ m/\d+ (\S+)/g) {
  2.  
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

El patrón busca por una cifra, seguida por un espacio en blanco, y captura todos los caracteres distintos de espacio en blanco que siguen.

Para controlar repeticiones, los almacenas en un hash, y listo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Web

¿Quién está conectado?

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