Simple HTML Dom

  • Autor Autor kekojeda
  • Fecha de inicio Fecha de inicio
K

kekojeda

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas, estoy usando Simple HTML Dom para un revelamiento de televisores de distintas paginas.

Vengo perfecto extrayendo datos identificando con class o id. Pero me encontré con el siguiente inconveniente, en la tabla de especificaciones técnicas, de la cual quiero sacar solamente modelo, todas las td la misma clase por lo que no puedo diferenciar una de otro. pongo el código html.
(le saco filas a la tabla para no hacerla tan extensa)
HTML:
<table>
    <tbody>
                        <tr>
                            <td class='name'>Tamaño de pantalla</td>
                            <td class='desc upperCase'>55 &quot;</td>
                        </tr>
                        <tr>
                            <td class='name'>Modelo</td>
                            <td class='desc upperCase'>DA55X6500X</td>
                        </tr>
                        <tr>
                            <td class='name'>MARCA</td>
                            <td class='desc upperCase'>NOBLEX</td>
                        </tr>
                        <tr>
                            <td class='name'>SMART TV</td>
                            <td class='desc upperCase'>SI</td>
                        </tr>
                        <tr>
                            <td class='name'>VIDEO</td>
                            <td class='desc upperCase'>-</td>
                        </tr>
                        <tr>
                            <td class='name'>HDMI</td>
                            <td class='desc upperCase'>X 4</td>
                        </tr>
    </tbody>
</table>

Se que podría indicar que me tome el segundo td con class desc upperCase cambiando el 0 por 1 asi:

PHP:
$modelo = $pi->find('td[class=desc upperCase]',1);

Pero el problema es que no todos tienen las mismas especificaciones tecnicas; aveces el modelo esta en la 3 td o en la 4ta o 5ta.

Lo que se me ocurre que seria la solución es buscar el tr que en el primer td tenga de contenido 'modelo' y asignarle a $modelo el td que le sigue. pero no supe como hacer esto, hice varias pruebas sin éxito.

Alguno sabe como podría hacer esto?

Gracias desde ya.
Saludos
 
[MENTION=36528]kekojeda[/MENTION] esto me funciono!!

PHP:
<?php

require('simple_html_dom.php');

$html = str_get_html('
<table>
    <tbody>
    <tr>
        <td class="name">Tamaño de pantalla</td>
        <td class="desc upperCase">55 &quot;</td>
    </tr>
    <tr>
		<td class="name">Modelo</td>
        <td class="desc upperCase">DA55X6500X</td>
    </tr>
    <tr>
        <td class="name">MARCA</td>
        <td class="desc upperCase">NOBLEX</td>
    </tr>
    <tr>
        <td class="name">SMART TV</td>
        <td class="desc upperCase">SI</td>
    </tr>
    <tr>
        <td class="name">VIDEO</td>
        <td class="desc upperCase">-</td>
    </tr>
    <tr>
        <td class="name">HDMI</td>
        <td class="desc upperCase">X 4</td>
    </tr>
    </tbody>
</table>');

$trs = $html->find('tr');
foreach($trs as $tds){
	
	if($tds->find('td', 0)->plaintext == 'Modelo'){
		echo $tds->find('td', 0)->plaintext.': '.$tds->find('td', 1)->plaintext;
	}

}

?>

Echo Modelo: DA55X6500X
 
Última edición:
Con unos cambios menores me funciono a la perfección!
Muchas Gracias
 
Atrás
Arriba