Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Creo que el Maestro Al se refiere a que uses "analizar (etc.)" en vez de "parsear". Yo no quería decir nada, porque luego me sacáis lo de la letra "x" y...

Respecto a extraer la información, hay que tener en cuenta que los documentos SGML tienen unas normas que facilitan el poder trocearlo para luego analizarlo. Y si partimos de XML, que es más estricto y gerárquico, pues la cosa es incluso más fácil. El último HTML es casi XML, mientras que los anteriores son SGML.

El problema que veo es que la mayor parte de los documentos que hay en la WWW no están bien formateados, porque o no cumplen con el HTML que le corresponde (y a veces ni siquiera con SGML), o no usan correctamente las etiquetas (por ejemplo, usar <table /> como complemente cosmético, o usar <ul /> en vez de <dl />, etc.). Y con HTML5 (que incluye <nav />, <sumary />, <article /> y demás) no creo que lo hagan mucho mejor...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 09-05-2011 a las 17:26:36.
Responder Con Cita
  #2  
Antiguo 09-05-2011
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Talking

Cita:
Empezado por Ñuño Martínez Ver Mensaje
Creo que el Maestro Al se refiere a que uses "analizar (etc.)" en vez de "parsear". Yo no quería decir nada, porque luego me sacáis lo de la letra "x" y...
Okis! Usaré "analizar" y derivados.

Cita:
Empezado por Ñuño Martínez Ver Mensaje
El problema que veo es que la mayor parte de los documentos que hay en la WWW no están bien formateados, porque o no cumplen con el HTML que le corresponde (y a veces ni siquiera con SGML), o no usan correctamente las etiquetas (por ejemplo, usar <table /> como complemente cosmético, o usar <ul /> en vez de <dl />, etc.). Y con HTML5 (que incluye <nav />, <sumary />, <article /> y demás) no creo que lo hagan mucho mejor...
Ese es el problemón con el que me encuetro. Si quiero analizar un código HTML con tablas dentro de tablas, intento usar funciones que tiene como paramentros de entrada y salida "<table" y "</table>", y al analizar el texto, paran al encontrar la primera etiqueta de cierre.

Por eso sopeso cargar en el objeto DOM el código y luego iterar entre las distintas tablas hasta encontrar los indicadores correctos que me marquen el tesoro (o datos a buscar )

Realmente la gente maqueta con los pies, madre de dios cuantas tablas se usan para que quede "bonito"
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #3  
Antiguo 09-05-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Ñuño Martínez Ver Mensaje
que es más estricto y gerárquico
Primero y luego

Je, je,

// Saludos
Responder Con Cita
  #4  
Antiguo 09-05-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Unhappy Bendita dislexia

Tengo problemas con la jerarquía, siempre los he tenido.

Y para colmo, últimamente, mi antes superficial dislexia ha aumentado exponencialmente. Tengo que releer mis textos como diecisiete veces, y aun así se me escapan errores (ni el rojo del corrector automático veo, ya).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 10-05-2011
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
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.
Archivos Adjuntos
Tipo de Archivo: zip test.zip (1,6 KB, 3 visitas)
Tipo de Archivo: zip LIB_parse.zip (3,4 KB, 2 visitas)
Tipo de Archivo: zip LIB_http.zip (3,8 KB, 2 visitas)
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0

Última edición por papulo fecha: 10-05-2011 a las 12:50:56.
Responder Con Cita
  #6  
Antiguo 10-05-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Gracias por adjuntar esas bibliotecas (por un momento creí que sugerías que saliéramos a comprar algún libro). Veo que están en PHP, ¿te es válida también una solución en Delphi?
Responder Con Cita
  #7  
Antiguo 11-05-2011
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Pues ando buscando, en este caso concreto, desarrollar con PHP/cURL, luego, si tuviera que cambiar de lenguaje usaría Python, que está muy bien enfocado.

De todas maneras, las soluciones teóricas son aplicables a cualquier lenguaje, jejeje.

PD: El libro lo tienes por internet para descargarlo, lo recomiendo encarecidamente.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #8  
Antiguo 11-05-2011
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
A parte, intento que sea lo mas multiplataforma posible. Trabajo con Ubuntu y valoro mucho ese aspecto.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tipo desconocido en SQL Pedro-Juan SQL 5 06-03-2008 22:52:18
El Ministerio de Agricultura y Pesca de Francia cambia a Linux Casimiro Notevi Noticias 6 16-07-2007 19:49:12
StarTeam, ese desconocido [Gunman] Varios 5 31-01-2007 18:10:54
DLL con nombre desconocido ixMike Varios 2 28-06-2006 11:05:02
Es un camino desconocido Oxa78 Varios 11 25-11-2004 09:47:03


La franja horaria es GMT +2. Ahora son las 19:04:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi