Bueno bueno,
como lo haríais para analizar tablas dentro de tablas dentro de tablas (repetir n veces), la forma que tengo de analizar las webs, es primero buscar una "marca del tesoro", una cadena de texto que identifique el elemento contenedor de los datos que necesito extraer; puede ser un título o una cosa similar, exclusiva al 100%.
Adjunto un fichero de ejemplo, donde quiero sacar los datos "Equivalencias":
Código:
<td valign="top" colspan="2" class="textos">
HITACHI:<br>
S114-850, -A,-B,-C<br>
OPEL:<br>
1202033<br>
1202146<br>
1202161</td>
También adjunto las dos librerías que usan en el libro para trabajar.
De hecho, ahora usaba la función
Código PHP:
$text_html = "<div>...</div>"; //el texto html para analizar
$delimitador_inicio = "<table";
$delimitacion_final = "</table>";
$tablas = parse_array($text_html, $delimitador_inicio, $delimitacion_final);
La teoría dice que con esta llamada, tendría todas las tablas existentes en el código dentro de un array pero veo que se hace la picha un lío la pobre.
Un ejemplo de programa en PHP:
Código PHP:
<?php
require_once 'LIB_http.php';
require_once 'LIB_parse.php';
set_time_limit(0);
$web_source = file_get_contents("http://localhost/SkyNet/html/robots/table/dummy.html");
$table_array = parse_array($web_source, "<table", "</table>");
print_r($table_array);
for ($xx = 0; $xx < count($table_array); $xx++) {
$marca_tabla = "Equivalencias";
if (stristr($table_array[$xx], $marca_tabla)) {
$product_row_array = parse_array($table_array[$xx], "<tr", "</tr>");
for ($table_row = 0; $table_row < count($product_row_array); $table_row++) {
if (stristr($product_row_array[$table_row], $marca)) {
$product_cell_array = parse_array($product_row_array[$table_row], "<td", "</td>");
}
}
}
}
?>
Al final el array con las tablas anda manco.