Foros del Web » Programando para Internet » PHP »

PHP html Dom - extraer info de html

Estas en el tema de PHP html Dom - extraer info de html en el foro de PHP en Foros del Web. Buenas, Quería consultarles si pueden darme una mano con un codigo que estoy intentando hacer. Estoy trabajando con un archivo html para extraer una información, ...
  #1 (permalink)  
Antiguo 05/04/2014, 13:10
Avatar de roswell  
Fecha de Ingreso: abril-2004
Ubicación: Buenos Aires
Mensajes: 80
Antigüedad: 19 años, 11 meses
Puntos: 0
Busqueda PHP html Dom - extraer info de html

Buenas,

Quería consultarles si pueden darme una mano con un codigo que estoy intentando hacer.

Estoy trabajando con un archivo html para extraer una información, y estoy trabado en una parte, tengo el siguiente código html que se repite varias veces.

Código HTML:
<tr class="linea e_4">
<td class="orden"><span>1</span></td>
<td class="escudo"><img src="http://www.forosdelweb.com/f18/escudos/4.gif" alt=""></td>
<td class="equipo"><span>Banfield</span></td>
<td class="puntos"><span>0</span></td>
<td class="puntos"><span>58</span></td>
<td class="puntos"><span>59</span></td>
[COLOR="Red"][B]<td class="puntos destacado"><span>117</span></td>[/B][/COLOR]
<td class="puntos"><span>69</span></td>
[COLOR="red"][B]<td class="puntos destacado"><span>1.696</span></td>[/B][/COLOR]
</tr> 
Estoy extrayendo el td class="equipo" y quiero extraer los dos td class="puntos destacado" pero deben ir en variables separadas para poder reutilizarlo luego.

Para ello uso la libreria html dom:

Código PHP:
// Include the library
include('simple_html_dom.php');
 
// Retrieve the DOM from a given URL
$html file_get_html('archivo.html');

// parse los bloques que comienzan con tr
$auxTotal explode('<tr class="linea e_',$html);
$cantidad sizeof($auxTotal);


for (
$i=1;$i<$cantidad;++$i){

  
// Guarda puntos
  
$arrayPuntos $html->find('tr.linea td.puntos destacado');

  
// Guarda Equipos
  
$arrayEquipos $html->find('tr.linea td[class=equipo]');

}

// Muestra los datos  
for ($i=0;$i<$cantidad ;++$i){ 
   echo 
$arrayEquipos[$i] . '<br>';
   echo 
$arrayPuntos[$i] . '<br>';
 } 
Al usar de esa manera el output es:

Cita:
Banfield
117
Def. y Justicia
1.696
Independiente
171
Instituto
1.598
Sarmiento
48
Si se fijan muetra el equipo, y luego la saltea entre una columna y otra.

Saludos.

Última edición por roswell; 05/04/2014 a las 13:16
  #2 (permalink)  
Antiguo 06/04/2014, 06:21
 
Fecha de Ingreso: marzo-2014
Ubicación: Quito
Mensajes: 6
Antigüedad: 10 años
Puntos: 0
Respuesta: PHP html Dom - extraer info de html

que tal si intentas recorrer los td con class "puntos.destacado" y luego obtener los elementos padres (tr)?

no uso hace mucho esta libreria pero seria algo asi:

Código PHP:
Ver original
  1. $points = $html->find('tr.linea td.puntos destacado');
  2. $teams  = array();
  3.  
  4. foreach($points as $p)
  5. {
  6.  
  7. $teams[$p->parent()->find('td.equipo')->innertext][] = $p->find('span')->innertext;
  8.  
  9. }
  10.  
  11. foreach($teams as $team => $puntos)
  12.  echo 'equipo: ' . $team . ' tiene puntos => (' . implode(', ', $puntos) . ')<br />';

supongo imprimiria algo asi:

equipo: Banfield tiene puntos => (117, 1.696)

Última edición por whiite; 06/04/2014 a las 06:39
  #3 (permalink)  
Antiguo 06/04/2014, 19:36
Avatar de roswell  
Fecha de Ingreso: abril-2004
Ubicación: Buenos Aires
Mensajes: 80
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: PHP html Dom - extraer info de html

No devuelve nada, pero td.equipo esta al mismo nivel que td.puntos destacado, no es parent.

Código HTML:
<tr class="linea e_4">
      <td class="orden"><span>1</span></td>
      <td class="escudo"><img src="http://www.forosdelweb.com/f18/escudos/4.gif" alt=""></td>
      <td class="equipo"><span>Banfield</span></td>
      <td class="puntos"><span>0</span></td>
      <td class="puntos"><span>58</span></td>
      <td class="puntos"><span>59</span></td>
      <td class="puntos destacado"><span>117</span></td>
      <td class="puntos"><span>69</span></td>
      <td class="puntos destacado"><span>1.696</span></td>
</tr> 
Todos los td estan al mismo nivel.

Etiquetas: dom, html, info, variable
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 00:37.