![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#27
|
||||
|
||||
|
¡Hola a todos!
Cita:
Mañana instalaremos la primera versión de la solución a nuestro cliente. Ya es funcional la automatización sobre dos de los tres sitios Web (en una versión básica). Faltará hacer algunas mejoras, pero confío en que pronto tendremos esto al 100%. Algunos datos clave para quienes deseen desarrollar este tipo de soluciones: El componente TIdHTTP es excelente, pero no es la única herramienta que utilizamos. En cada caso primero hay que estudiar las tripas del sitio Web, elaborando un "mapa" de las URLs que se mandan llamar y sus parámetros. Un largo trabajo de arqueología informática, donde se requiere mucha paciencia. En este punto, mi recomendación es usar un componente TWebBrowser para saber cuáles son los parámetros que la página envía al servidor Web, y entonces después poder automatizar esos envíos con TIdHTTP. Domingo Seoane nos expone un buen ejemplo del evento TWebBrowser.OnBeforeNavigate2 en este mensaje. (la sentencia "ShowMessage(Values['P1']);" puede ser sustituida por "ShowMessage(Text);" para mostrar todos los parámetros (nombres y valores) que están a punto de enviarse en la petición). Gracias Domingo, ese ejemplo me sirvió muchísimo cuando no encontraba la manera de ver los parámetros que una página enviaba bajo el método Post. Lo que usualmente hacía para averiguarlo era guardar una copia local de la página como archivo .htm, cambiar su método Post por Get y ejecutar tal archivo, pero por alguna razón no se guardaba correctamente (incluso hasta instalé Firefox por primera vez para intentarlo con ese otro navegador ). Pero definitivamente es más profesional hacer trabajo de arqueología con herramientas más finas y no puro pico y pala. ![]() La esencia de automatizar un sitio Web ya sea con TIdHTTP o con rutinas de más bajo (y flexible) nivel como las propuestas por Domingo, consiste en conocer las URLs (direcciones Web) a las cuales hay que ordenarles algo y los parámetros que habremos de enviarles para que ese algo ocurra de manera correcta. Dichas URLs aparecen en los atributos "Action" de las etiquetas HTML "Forms" (¿cómo? ¿el lector todavía no ha usado la opción "Ver código fuente" de su navegador? ).Generalmente, cuando se invoca a una de esas direcciones Web, el misterioso programa servidor que se encuentra del otro lado de la línea (generalmente Apache), nos envía como respuesta un flujo de bytes HTML, una página vaya. El resto del trabajo consiste en analizar ese flujo de bytes como una cadena de caracteres, buscando en posiciones específicas el dato que deseamos extraer. Esto no quiere decir que vamos a estudiar la cadena que regresó byte por byte. La cadena de bytes puede ser guardada como una página .htm y verla con mayor detalle en cualquier editor de texto. De hecho esto se hace generalmente desde antes de empezar a programar (me meto al navegador, consulto un dato y la página que me regresa la guardo como archivo local). Se estudia ese archivo de texto para encontrar patrones comunes que ayuden a identificar con seguridad la posición donde siempre aparece el dato que buscamos. Es decir, ya se ha familiarizado uno con el código fuente de una página de resultados y es entonces cuando podemos escribir un algoritmo que acaricie a esos caracteres y bese a la parte más sensible de la cadena, obteniendo ese «¡Si, aquí!» que todos deseamos escuchar. ![]()
En las próximas versiones vamos a utilizar alguna biblioteca (esas que creíamos que eran librerías en el siglo pasado) especial para análisis sintáctico HTML y reconocimiento de expresiones regulares. Esto con el fin de hacer más segura la extracción de datos. Porque como el propietario del sitio cambie ligeramente el diseño de la página...¡pabernosmatao! ![]() Todo esto que escribí fue a botepronto (palabra hermana de pabernosmatao) y en base a mis escasos conocimientos sobre la Web. Aún así, espero que resulte de utilidad y de antemano pido disculpas por si dije alguna babosada. Ahora sí me voy a cenar, mañana será al gran día (a ver cómo me sale la quincena ).Un abrazo parseado. |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Automatizacion de word (generar documentos) | alt126 | C++ Builder | 4 | 24-04-2007 04:19:27 |
| Automatizacion de word (insertar tablas) | alt126 | C++ Builder | 2 | 04-11-2005 10:44:29 |
| Consejo Automatizacion Excel Builder C++ | alt126 | C++ Builder | 0 | 14-04-2005 10:52:04 |
| HTTP Indy | bochi | Internet | 1 | 27-12-2003 01:57:34 |
| Http Server | ebeltete | Internet | 0 | 17-05-2003 02:57:39 |
|