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 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
Web bots y 'toa la pesca', ese tema interesante y desconocido

Buenas gente,

hacía mucho tiempo que no me pasaba por aquí, cual hijo crecidito que abandona el hogar paterno para irse en busca de aventuras y dejar de calentar la cabeza a los progenitores (grandes y pacientes foreros que me ayudaron en mis comienzos).

El caso es que por temas laborales me he topado con los webbots, crawlers y cosillas similates, descubriendo un mundo muy interesante pero a la vez muy abstracto para una sola cabeza pensante.

No me preguntéis por que, pero el primer foro donde se me ha ocurrido meter el hocico ha sido aquí, cuna de cracks y buena gente.

El caso es que me apetece hablar de este tema, compartir ideas (también quebraderos de cabeza) y no se donde ponerlo o por donde empezar.

Bueno, empezar si, estoy leyendo un libro "Webbots, spiders and screen crapers" de Michael Schrenk, una buena guía para comenzar, te da algunas ideas y te muestra el camino, pero como todos los libros, los ejemplos son perfectos y la realidad te da una patada en la entrepierna.

Hasta donde he llegado, un webbot te carga el código de una web dentro de una variable y luego parseas/buscas la información que deseas y haces las operaciones que te apece.

Por dar un ejemplo, un robot te podría rastrear una raza de perros en una serie de perreras que tengan sus perros listados en internet para luego mostrar las coincidencias en el resultado de las perreras de la zona y si el usuario está conforme, darle un nuevo hogar (luego te forras con el adsense de tiendas de perros o te socias con alguna tienda para ello )

A ver quien se anima por aquí.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #2  
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
Cita:
Empezado por papulo Ver Mensaje
Hasta donde he llegado, un webbot te carga el código de una web dentro de una variable y luego parseas/buscas la información que deseas y haces las operaciones que te apece.
Vaya manera de desmontar un mito.

Pero a lo que venía yo es a: ¿incluimos a los "spiders" en "toa la pesca"?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
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
El título del libro es ya es de por si 100% explícito "Webbots, spiders and screen crapers".

Por lo que todo lo que puedas aportar será bienvenido.

En mi caso comentaré, que el tema de usar parseadores de texto, no siempre me funciona. ¿Que te parece usar DOMelement para ello? Permite cargar un trozo de código HTML en una objeto de esa clase y luego tratarlo y demás.

El único problema es la poca documentación que he encontrado al respecto, pero tanto trabajar con DOM en javascript, hace que me resulte mas cómodo

Supongo que cuantos mas métodos mejor.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #4  
Antiguo 09-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: 29
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
analizador sintáctico
análisis de sintaxis
analizar sintaxis
Responder Con Cita
  #5  
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
Cita:
Empezado por Al González Ver Mensaje
analizador sintáctico
análisis de sintaxis
analizar sintaxis
Primero y luego .

Buenas Al ¿podrías explayarte un poco mas? Por favor.
__________________
"El aprendizaje potencia la intuición"
Yo mismo, en un momento de inspiración. v2.0
Responder Con Cita
  #6  
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
  #7  
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
  #8  
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
  #9  
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
  #10  
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
  #11  
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: 29
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
  #12  
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
  #13  
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 00:26:48.


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