• Publicidad

Extraer fragmento de un html

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Extraer fragmento de un html

Notapor jeanmarc_tec » 2007-02-18 03:59 @207

Hola. Quisiera que me ayudaran a resolver un problema. Necesito extraer un fragmento de un html; sólo me interesan dos tablas. Tienen como característica: width => '640'.

Aquí mismo encontré una forma de hacerlo que es a través de HTML::TableParser, pero no me queda muy claro cómo usarlo. Me marca un error a la hora de ejecutarlo:
Código: Seleccionar todo
Can't locate auto/HTML/TableExtract/attribs.al in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/lib/perl5/HTML/Parser.pm line 82

Y ya obtenidas, las tablas tienen la siguiente estructura:
ip | host | conexiones

lo cual pretendo meter esos datos a una base de datos.

¿Alguien me podría decir cómo hacer que cada tabla tuviera un máximo de 20 filas no más?

Se los agradeceré mucho.
jeanmarc_tec
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2007-02-01 15:10 @673

Publicidad

Notapor explorer » 2007-02-18 06:37 @317

Creo que el módulo HTML::TableExtract no ha sido bien instalado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor jeanmarc_tec » 2007-02-18 09:37 @442

Quizá me falta alguna librería pero documentando la situación pasa que tengo instalada la siguiente librería:

libhtml-tableextract-perl

y esto es lo que instala:
Código: Seleccionar todo
/usr
/usr/lib
/usr/lib/perl5
/usr/lib/perl5/HTML
/usr/lib/perl5/HTML/TableExtract.pm
/usr/share
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/HTML::TableExtract.3pm.gz
/usr/share/doc
/usr/share/doc/libhtml-tableextract-perl
/usr/share/doc/libhtml-tableextract-perl/README
/usr/share/doc/libhtml-tableextract-perl/copyright
/usr/share/doc/libhtml-tableextract-perl/examples
/usr/share/doc/libhtml-tableextract-perl/examples/test.pl.gz
/usr/share/doc/libhtml-tableextract-perl/changelog.gz
/usr/share/doc/libhtml-tableextract-perl/changelog.Debian.gz


Utilizo Debian Sarge.
jeanmarc_tec
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2007-02-01 15:10 @673

Notapor explorer » 2007-02-18 09:58 @457

Pues sí... en mi HTML::TableExtract no necesita de attribs.al.

Sería interesante ver el trozo de código que te falla.

Agrega
use warnings;
use diagnostics;
al programa para ver si nos da más pistas.
Última edición por explorer el 2007-02-18 11:11 @507, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor jeanmarc_tec » 2007-02-18 11:10 @507

Este el archivo html
Sintáxis: [ Descargar ] [ Ocultar ]
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body> 
  2.  
  3.  
  4. <br><br> 
  5. <table width="100%" border="0" cellspacing="0" cellpadding="5"> 
  6. <tr> 
  7. <td width="100%" valign="top" bgcolor="#ffffff"> 
  8. <table width="640" border="0" cellspacing="1" cellpadding="2" bgcolor="#818181" align="center"> 
  9. <tr> 
  10. <td colspan="2" bgcolor="#6C8FBB" align="center"><span>General Stats</span></td> 
  11.  
  12. <td colspan="2" bgcolor="#6C8FBB" align="center"><span>Incoming/Outgoing Traffic<br> 
  13.  
  14. (bytes)</span></td> 
  15.  
  16. <td colspan="2" bgcolor="#6C8FBB" align="center"><span>Internal/External Traffic<br> 
  17. (bytes)</span></td> 
  18.  
  19. <td colspan="2" bgcolor="#6C8FBB" align="center"><span>Local Hosts</span></td> 
  20.  
  21. <td colspan="2" bgcolor="#6C8FBB" align="center"><span>Remote Hosts</span></td> 
  22.  
  23. </tr> 
  24.  
  25. <tr bgcolor="#ffffff"> 
  26. <td><b>Connections</b></td> 
  27.  
  28. <td align="right">1</td> 
  29.  
  30. <td><b>Incoming</b></td> 
  31.  
  32. <td align="right">0</td> 
  33.  
  34. <td><b>Internal</b></td> 
  35. <td align="right">0</td> 
  36.  
  37. <td><b>Probed</b></td> 
  38. <td align="right">0</td> 
  39.  
  40. <td><b>Probed</b></td> 
  41. <td align="right">1</td> 
  42. </tr> 
  43.  
  44. <tr bgcolor="#ffffff"> 
  45. <td><b>Packets</b></td> 
  46. <td align="right">1</td> 
  47.  
  48. <td><b>Outgoing</b></td> 
  49. <td align="right">292</td> 
  50.  
  51. <td><b>External</b></td> 
  52. <td align="right">0</td> 
  53.  
  54. <td><b>Responding</b></td> 
  55.  
  56. <td align="right">1</td> 
  57.  
  58. <td><b>Responding</b></td> 
  59. <td align="right">0</td> 
  60. </tr> 
  61.  
  62. <tr bgcolor="#ffffff"> 
  63. <td><b>Bytes</b></td> 
  64.  
  65. <td align="right">292</td> 
  66.  
  67. <td><b>Total</b></td> 
  68. <td align="right">292</td> 
  69.  
  70. <td><b>Other</b></td> 
  71. <td align="right">0</td> 
  72.  
  73. <td><b>Total</b></td> 
  74. <td align="right">1</td> 
  75.  
  76. <td><b>Total</b></td> 
  77. <td align="right">1</td> 
  78. </tr> 
  79. </table> 
  80.  
  81. </td> 
  82. </tr> 
  83. </table> 
  84. <br><br> 
  85. <table width="100%" border="0" cellspacing="0" cellpadding="5"> 
  86. <tr><td colspan="5"> 
  87.  
  88. <table width="640" border="0" cellspacing="1" cellpadding="2" align="center" bgcolor="#818181"> 
  89. <tr bgcolor="#EDEDED"> 
  90. <td colspan="3" align="center"><b>Possible Incoming Scan Hosts</b></td> 
  91. </tr> 
  92.  
  93. <tr bgcolor="#C9D5E5"> 
  94. <td width="110">IP</td> 
  95.  
  96. <td>Host Name</td> 
  97.  
  98. <td width="90" align="right"> 
  99. Local Hosts<br>Contacted 
  100. </td> 
  101. </tr> 
  102. </table></td></tr></table> 
  103. <br><br> 
  104. <table width="100%" border="0" cellspacing="0" cellpadding="5"> 
  105. <tr><td colspan="5"> 
  106.  
  107. <table width="640" border="0" cellspacing="1" cellpadding="2" align="center" bgcolor="#818181"> 
  108. <tr bgcolor="#EDEDED"> 
  109. <td colspan="3" align="center"><b>Possible Outgoing Scan Hosts</b></td> 
  110.  
  111. </tr> 
  112.  
  113. <tr bgcolor="#C9D5E5"> 
  114. <td width="110">IP</td> 
  115.  
  116. <td>Host Name</td> 
  117.  
  118. <td width="90" align="right"> 
  119. Remote Hosts<br>Contacted 
  120. </td> 
  121. </tr> 
  122. <tr bgcolor="#ffffff"> 
  123. <td><a href="http://~ipaudit/cgi-bin/SearchIpauditData?date=2007-02-16-22:00&amp;ip=010.001.019.001&amp;sort=0" target="_blank">010.001.019.001</a></td> 
  124.  
  125. <td> </td> 
  126. <td align="right">1</td> 
  127. </tr> 
  128. </table></td></tr></table> 
  129. <br><br> 
  130. <table width="100%" border="0" cellspacing="0" cellpadding="5"> 
  131. <tr><td colspan="5"> 
  132.  
  133. <table width="640" border="0" cellspacing="1" cellpadding="2" align="center" bgcolor="#818181"> 
  134. <tr bgcolor="#EDEDED"> 
  135. <td colspan="5" align="center"><b>Busiest Local Hosts</b></td> 
  136. </tr> 
  137.  
  138. <tr bgcolor="#C9D5E5"> 
  139.  
  140. <td>IP</td> 
  141. <td>Host Name</td> 
  142. <td align="right">Incoming</td> 
  143. <td align="right">Outgoing</td> 
  144. <td align="right">Total</td> 
  145. </tr> 
  146. <tr bgcolor="#ffffff"> 
  147. <td><a href="http://~ipaudit/cgi-bin/SearchIpauditData?date=2007-02-16-22:00&amp;ip=010.001.019.001&amp;sort=0" target="_blank">010.001.019.001</a></td> 
  148. <td> </td> 
  149. <td align="right">0</td> 
  150.  
  151. <td align="right">292</td> 
  152. <td align="right">292</td> 
  153. </tr> 
  154. </table></td></tr></table> 
  155. <br><br> 
  156. <table width="100%" border="0" cellspacing="0" cellpadding="5"> 
  157. <tr><td colspan="5"> 
  158.  
  159. <table width="640" border="0" cellspacing="1" cellpadding="2" align="center" bgcolor="#818181"> 
  160. <tr bgcolor="#EDEDED"> 
  161. <td colspan="5" align="center"><b>Busiest Remote Hosts</b></td> 
  162. </tr> 
  163.  
  164. <tr bgcolor="#C9D5E5"> 
  165.  
  166. <td>IP</td> 
  167. <td>Host Name</td> 
  168. <td align="right">Incoming</td> 
  169. <td align="right">Outgoing</td> 
  170. <td align="right">Total</td> 
  171. </tr> 
  172. <tr bgcolor="#ffffff"> 
  173. <td><a href="http://~ipaudit/cgi-bin/SearchIpauditData?date=2007-02-16-22:00&amp;ip=239.255.255.250&amp;sort=0" target="_blank">239.255.255.250</a></td> 
  174. <td> </td> 
  175. <td align="right">0</td> 
  176.  
  177. <td align="right">292</td> 
  178. <td align="right">292</td> 
  179. </tr> 
  180. </table></td></tr></table> 
  181. <br><br> 
  182. <table width="100%" border="0" cellspacing="0" cellpadding="5"> 
  183. <tr> 
  184. <td width="100%" valign="top" bgcolor="#ffffff"> 
  185.  
  186. <table width="640" border="0" cellspacing="1" cellpadding="2" align="center" bgcolor="#818181"> 
  187.  
  188. <tr bgcolor="#EDEDED"> 
  189. <td colspan="7" align="center"><b>Busiest Host Pairs</b></td> 
  190. </tr> 
  191.  
  192. <tr bgcolor="#C9D5E5"> 
  193. <td>Local IP</td> 
  194. <td>Remote IP</td> 
  195. <td>Local Host Name</td> 
  196. <td>Remote Host Name</td> 
  197. <td align="right">Incoming</td> 
  198. <td align="right">Outgoing</td> 
  199. <td align="right">Total</td> 
  200. </tr> 
  201. <tr bgcolor="#ffffff"> 
  202.  
  203. <td><a href="http://~ipaudit/cgi-bin/SearchIpauditData?date=2007-02-16-22:00&amp;ip=010.001.019.001&amp;sort=0" target="_blank">010.001.019.001</a></td> 
  204. <td><a href="http://~ipaudit/cgi-bin/SearchIpauditData?date=2007-02-16-22:00&amp;ip=239.255.255.250&amp;sort=0" target="_blank">239.255.255.250</a></td> 
  205. <td> </td> 
  206. <td> </td> 
  207. <td align="right">0</td> 
  208. <td align="right">292</td> 
  209. <td align="right">292</td> 
  210. </tr> 
  211. <tr bgcolor="#C9D5E5"> 
  212. <td>Local IP</td> 
  213.  
  214. <td>Remote IP</td> 
  215. <td>Local Host Name</td> 
  216. <td>Remote Host Name</td> 
  217. <td align="right">Incoming</td> 
  218. <td align="right">Outgoing</td> 
  219. <td align="right">Total</td> 
  220. </tr> 
  221. </table></td></tr></table> 
  222. <p><i>Elapsed time is 0 seconds.</i></p> 
  223. </body></html> 

y me interesa sacar sólo las tablas de incoming scan y outgoin scan

Este es código Perl que tengo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
#

use HTML::TableExtract;
use XML::Simple;
$html = do { undef $/; open HTML,"<archivo_audit.html"; <HTML> };
$te = HTML::TableExtract->new( attribs => { width => '640' }, depth => 1 );
 $te->parse($html);
 @tablas = $te->tables or die "No encontré la tabla!\n";
  sub filtrar {
    filtra($_ = shift);
    }
    sub filtra {
      s/^\s*//;
        s/\s*$//;
          $_;
          }
          @titulos = map filtra, @{($tablas[0]->rows)[0]};
          $mitabla = $tablas[1];
          foreach $fila ( $mitabla->rows ) {
            $i=0;
              foreach $titulo ( @titulos ) {
                  $xml->{persona}->[$j]->{ $titulo } = filtrar($fila->[$i++]);
                    }
                         $j++;
                          }

print XMLout($xml, RootName=>'Personas', noattr => 1, xmldecl => '<?xml version="1.0" ?>');
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
y me marca el error y por lógica no puedo avanzar para generar el archivo sql para inyectar los datos a una base de datos la cual tendría el formato antes mencionado.
jeanmarc_tec
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2007-02-01 15:10 @673

Notapor jeanmarc_tec » 2007-02-18 15:11 @674

ya le coloque las 2 lineas que me comentas y el error es el siguiente

Código: Seleccionar todo
Can't locate auto/HTML/TableExtract/attribs.al in @INC (@INC contains:
        /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/lib/perl5/HTML/Parser.pm line 82 (#1)
Uncaught exception from user code:
        Can't locate auto/HTML/TableExtract/attribs.al in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/lib/perl5/HTML/Parser.pm line 82
        AutoLoader::AUTOLOAD('HTML::TableExtract=HASH(0x83f4880)', 'HASH(0x814cc20)') called at /usr/lib/perl5/HTML/Parser.pm line 82
        HTML::Parser::init('HTML::TableExtract=HASH(0x83f4880)', 'attribs', 'HASH(0x814cc20)') called at /usr/lib/perl5/HTML/Parser.pm line 25
        HTML::Parser::new('HTML::TableExtract', 'attribs', 'HASH(0x814cc20)') called at /usr/lib/perl5/HTML/TableExtract.pm line 65
        HTML::TableExtract::new('HTML::TableExtract', 'undef', 'undef') called at test2.pl line 8



y probé unos ejemplos que hay este mismo foro y y jala sin ningún problema

espero y me puedan echar la mano :cry:
jeanmarc_tec
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2007-02-01 15:10 @673

Notapor creating021 » 2007-02-18 19:42 @862

Can't locate auto/HTML/TableExtract/attribs.al


Uuff, auto/HTML/TableExtract/attribs.al simplemente no existe, no está hecho en C/C++ así que no entiendo porque busca attribs.al...

Te recomiendo que reinstales este módulo pero haz un make test...
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2007-02-18 20:31 @896

Lo he probado y tu programa me funciona sin problemas... sale el xml bien.

Me temo que va a ser la versión de Perl que es algo antigua, que quizás considera attribs como palabra reservada.

Prueba a cambiar de posición depth y attribs, para que el hash de attribs esté al final. O coloca attribs entre comillas simples: 'attribs'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor jeanmarc_tec » 2007-02-19 11:52 @536

la version de perl es la siguiente

5.8.4-8sarge5 y no entindo porque no funciona la verdad :? y mas quea explorer si le funciona
de casualidad explorer podrias mostrarme el resultado del xml que te da
jeanmarc_tec
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2007-02-01 15:10 @673

Notapor explorer » 2007-02-19 15:33 @689

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<?xml version="1.0" ?>
<Personas>
  <persona>

    <General Stats>Possible Incoming Scan Hosts</General Stats>
    <Incoming/Outgoing Traffic


       (bytes)></Incoming/Outgoing Traffic


       (bytes)>
    <Internal/External Traffic

       (bytes)></Internal/External Traffic

       (bytes)>
    <Local Hosts></Local Hosts>
    <Remote Hosts></Remote Hosts>
  </persona>
  <persona>

    <General Stats>IP</General Stats>
    <Incoming/Outgoing Traffic


       (bytes)>Local Hosts
Contacted</Incoming/Outgoing Traffic


       (bytes)>
    <Internal/External Traffic

       (bytes)></Internal/External Traffic

       (bytes)>
    <Local Hosts></Local Hosts>
    <Remote Hosts></Remote Hosts>
  </persona>
</Personas>
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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Avanzado

¿Quién está conectado?

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

cron