Foros del Web » Programando para Internet » PHP »

Analizando una tabla con simple_html_dom.php

Estas en el tema de Analizando una tabla con simple_html_dom.php en el foro de PHP en Foros del Web. Saludos, Es mi primer post aqui pero se ve ua comunidad agradable de la que me gustaría participar y comienzo con una pregunta. Estoy tratando ...
  #1 (permalink)  
Antiguo 30/08/2009, 13:11
 
Fecha de Ingreso: agosto-2009
Ubicación: Ciudad de México
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
[RESUELTO] Analizando una tabla con simple_html_dom.php

Saludos,

Es mi primer post aqui pero se ve ua comunidad agradable de la que me gustaría participar y comienzo con una pregunta.

Estoy tratando de obtener los datos de una tabla de estadisticas de futbol. Mas precisamente de la femexfut (liga mexicana de futbol). Intenté hacerlo con una clase que se llama simple_html_dom.php . Que como podran observar en la pagina es muy facil de usar.

Mi código es el siguiente:
Código PHP:
<?php
  
include_once('simple_html_dom.php');
  
$html file_get_html('url');
  echo 
$html;
  echo 
"<hr />";
// Si uso strip_tags solo muestra el resultado cuando uso el echo $html
// Si comento esa linea, ya no me lo muestra
  
echo strip_tags($html,'<table> <td> <tr>');
// Y cuando trato de encontrar una tabla, me regresa un array bastante raro 
// ademas de que no esta mostrando la tabla que quiero
  
$ret $html->find('table[class=numerosestadistica]');
//  echo $ret;
  
print_r($ret);
?>
Se que si puede seleccionar la tabla correctamente por que en algun momento lo conseguí ayer pero borre ese archivo de prueba por error.

Espero alguien tenga alguna idea de como resolver esto o alguna opcion de lo que podria hacer, pues cuando haga funcionar esto quiero hacer un plugin de wordpress donde con un click descargue el codigo de la pagina, obtenga la tabla, lo procese y lo guarde en un archivo de texto y a partir de ahi desplegarlo en una pagina estática.

Les agradezco de antemano su tiempo.

PD: Me hubiera gustado formatear mejor el texto con enlaces y eso pero no me lo permite por antigüedad. Espero no les moleste.

Última edición por diegogarciamendoza; 01/09/2009 a las 04:00 Razón: Solucioné el problema
  #2 (permalink)  
Antiguo 30/08/2009, 23:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Analizando una tabla con simple_html_dom.php

Como te imprime las tablas. Si es posible coloca algun ejemplo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 31/08/2009, 05:08
 
Fecha de Ingreso: agosto-2009
Ubicación: Ciudad de México
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Analizando una tabla con simple_html_dom.php

Pues bueno, en el primer echo $html me muestra la tabla exactamente igual que en el origen. O sea el simplehtmldom si jala bien la página.

El problema es cuando trato de hacer el strip_tags o el find-> me muestra algo asi...
Código:
Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => table [attr] => Array ( 
[width] => 100% [class] => numerosestadistica [cellpadding] => 0 ) [children] => Array ( [0] => 
simple_html_dom_node Object ( [nodetype] => 1 [tag] => tr [attr] => Array ( ) [children] => Array ( 
[0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => td [attr] => Array ( [align] => 
Center [bgcolor] => #689834 [style] => color: #ffffff; font-size: 12px; font-weight: bold ) [children] 
=> Array ( ) [nodes] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 3 [tag] => 
text [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => 
simple_html_dom_node Object *RECURSION* [_] => Array ( [4] => LUGAR ) [dom:private] => 
simple_html_dom Object ( [root] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => 
root [attr] => Array ( ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 6 
[tag] => unknown [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => 
simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 2 [4] => ) [dom:private] => 
simple_html_dom Object *RECURSION* ) [1] => simple_html_dom_node Object ( [nodetype] => 
1 [tag] => html [attr] => Array ( [xmlns] =>  ) [children] => Array ( [0] => simple_html_dom_node 
Object ( [nodetype] => 1 [tag] => head [attr] => Array ( ) [children] => Array ( [0] => 
simple_html_dom_node Object ( [nodetype] => 1 [tag] => title [attr] => Array ( ) [children] => Array 
( ) [nodes] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 3 [tag] => text [attr] => 
Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object 
*RECURSION* [_] => Array ( [4] => Federación Mexicana de Fútbol Asociación, A. C. ) 
[dom:private] => simple_html_dom Object *RECURSION* ) )
Por supuesto esto solo es una muestra minima en realidad muestra un monton de texto. Ademas si no pongo el echo $html no me muestra eso. De hecho solo muestra el <hr />

Ah lo peor del caso es que se que me lo mostro una vez de forma correcta pero no lo puedo repetir... incluso recuerdo que me lo puso en un array de un solo elemento, asi que pensaba usar el implode o explode, no recuerdo como se llama.

Tambien esa "libreria" tiene una opcion pasa pasarlo a texto plano. pero no se si me sirva gran cosa. Tambien trato de hacerlo con regexp pero como no se regexp apenas estoy empezando a aprender.

Gracias por responder
  #4 (permalink)  
Antiguo 31/08/2009, 07:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Analizando una tabla con simple_html_dom.php

¿Como tu quieres que se muestre en la pantalla?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 31/08/2009, 18:18
 
Fecha de Ingreso: agosto-2009
Ubicación: Ciudad de México
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Pues el codigo de la tabla solito... <table><tr><td>Equipo</td><td>...

De esa forma ya puedo formatearlo como yo quiera.

Como te digo que me salió en un Array pero todo el codigo de la tabla...

Tambien ando leyendo sobre DOM en PHP pero no le entiendo gran cosa :(

Lo resolví.

La cosa es que me faltaba hacerle otro proceso a los datos, A continuación muestro el codigo completo para que muestre solo la tabla que necesitaba.
Código PHP:
<?php
        
include_once('simple_html_dom.php');
        
$html file_get_html('femexfut.html');
// Aqui busco la tabla con class="numerosestadistica"
        
$e $html->find("table.numerosestadistica",0); 
        echo 
$e->outertext// He aqui lo que me faltaba... 
// especificar que queria que me mostrara pues hay innertext, plaintext 
// y varios atributos mas
        
$html->clear(); // Liberar la memoria
        
unset($html);
?>
No puedo poner urls pero si buscan por el nombre de archivo les recomiendo esta libreria en caso de que necesiten lidiar un poco con html y no quieran acudir al DOM de PHP o complicarse demasiado con regexp.

Gracias abmaelrc por tu atención.

Última edición por GatorV; 01/09/2009 a las 08:56
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:43.