![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
![]() ¡Hola a todos!
Quisiera saber si alguno de ustedes ha programado algo de automatización Web y qué me aconsejaría para poder implementar ésta en una aplicación Delphi 7 Win32. Quiero automatizar la operatividad de una página Web, hacer un pequeño robot que:
Todo esto sin la necesidad de desplegar la página, es decir, sin utilizar un navegador ni intervención alguna del usuario. Mi aplicación Delphi teniendo comunicación HTTP con el servidor Web de la página. He visto que hay algunos componentes Delphi que permiten implementar soluciones como la que planteo, incluso he leído que algunos tienen la capacidad de hacer el envío de datos al servidor Web tanto por el método Post como por el método Get, pero me gustaría partir de la experiencia y recomendaciones que amablemente me hagan al respecto. De antemano muchas gracias. Un abrazo sin protocolo. Al González. ![]() |
#2
|
||||
|
||||
Hola Al, la verdad es que la frase "... pero me gustaría partir de la experiencia ..." impone mucho, sobre todo a los que tenemos poca
![]() Supongo que ya habrás hecho un búsqueda por los foros, ¿has revisados estos hilos? http://www.clubdelphi.com/foros/showthread.php?t=34263 http://www.clubdelphi.com/foros/showthread.php?t=34666 ¿Buscas algo parecido? ¿buscas algo diferente? ¿puede servirte, pero necesitas ampliarlo? Vamos a ver hasta donde podemos llegar ... A menos que por aquí haya alguien con experiencia que nos de una solución mejor ![]() |
#3
|
||||
|
||||
Hola,
Puedes utilizar el componente "TIdHttp" de los "Indy". Es un cliente HTTP que te permitirá requerir un recurso (GET), enviar datos (POST), etc. No tiene nada que ver con el "TWebBrowser", es decir, en ningún momento precisarás mostrar el resultado de tus consultas. Cuando realizas una petición "GET" puedes obtener el resultado como un sencillo "Stream", no necesitas, por tanto, volcar dicho contenido (sea HTML o sea el que sea) en ningún sitio. Puedes, por tanto, "parsearlo", guardarlo, en fin, lo que necesites. "Parsers" de HTML hay varios... creo recordar. Será cuestión de que eches un vistazo por Torry's o alguna página similar. Creo que las "Jedi" incluyen algún "parser HTML", por si acaso instalaste estos componentes y no quieres ponerte a buscar ninguno aparte. No sé si lo que he dicho te sirve como aproximación... acaso algún compañero pueda añadir algo más. Tú ya sabes que puedes replicar lo que te sea menester que por aquí estamos. ![]() |
#4
|
||||
|
||||
Hola Al.
A la excelente explicación de dec, solamente hará falta añadir que regularmente los sitios manejan una "sesión", cuyo ID guardan en una galleta (cookie) y requieren de este para poder reconocer que usuario ha iniciado sesión y si esta no ha expirado. Esto también podes manejarlo con las Indy, que cuentan con la maquinaria necesaria para esta tarea: TidCookieManager, que luego asocias a la propiedad CookieManager del ya mencionado TidHTTP. Finalmente comentar que no hace falta que bajes la página de login cada vez que realices el paso 1/2 de tu explicación. Basta con que realices la llamada -normalmente un POST- que ejecutaría el navegador cuando un usuario humano haga clic en el botón "login", y estes atento a recibir y almacenar (puede ser en memoria) el cookie correspondiente a la sesión. Claro que esta es la generalidad de los casos, pero puede haber páginas que implementen en reconocimiento del usuario de alguna otra manera, para ellas habrá que hacer algo de análisis de comportamiento, pero siempre son cosas que pueden manejarse desde delphi. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate Última edición por jachguate fecha: 01-11-2006 a las 02:19:51. |
#5
|
||||
|
||||
Bueno, como alternativa a Indy podemos usar Wininet. Podemos hacer Get, podemos hacer Post y maneja las cookies perfectamente incluso las de sesión. No tengo nada en contra de las Indy, es solo por dar alternativas, además no se pueden usar en el Turbo
![]() Bueno, un poco de código para animar la cosa:
Ahora que ya podemos hacer Get y Post solo nos falta analizar las paginas que obtenemos ![]() EDITO: Modifico la función Post para incluir la cabecera Content-Type, que al parecer es necesaria, al menos para el siguiente ejemplo: Entrar al ClubDelphi, iniciar sesión y obtener la pagina principal de los foros:
Última edición por seoane fecha: 02-11-2006 a las 20:32:34. |
#6
|
||||
|
||||
![]() ¡Hola a todos!
Gracias Seoane, David y Antonio por la información que me proporcionan. Este viernes evaluaré sus sugerencias y haré las primeras pruebas. Los mantendré informados de mis avances para que el curso de esta solución (el hilo en sí) sea una experiencia de la que puedan aprender otros desarrolladores que se encuentren en la misma vicisitud. Un abrazo telarañudo. Al González. ![]() |
#7
|
||||
|
||||
Hola,
Cita:
![]() |
#8
|
||||
|
||||
Hola,
Román, personalmente también pienso que utilizar las Indy puede ser más razonable, empero, estarás conmigo en que el código fuente es una maravilla, que acaso en ocasiones sea mejor (en varios aspectos y por diversos motivos) utilizar, directamente, el API WinInet. Yo desde luego me he permitido añadir el código entre el resto de Trucos, con el permiso de Seoane, pues que creo que puede ser un código fuente muy útil. Ahora, ¿que por eso digo que las Indy no debieran usarse? Nada de eso, de hecho ya he dicho que me parece más razonable usarlas, siempre que sea posible; pero también digo que no viene de más tener otras opciones, que ratón que conoce un agujero sólo pronto le caza el gato (o algo así). ![]() ¿Que no? ![]() |
#9
|
||||
|
||||
Hola,
Estoy de acuerdo contigo Román. Más ahora que sé que puede funcionar mejor incluso. Empero, lo dicho dicho, una cosa no quita la otra. En realidad creo que estamos de acuerdo todos, incluído el propio Domingo. ![]() |
#10
|
|||
|
|||
![]() Cita:
Y se formo la fiesta ![]() Exelente aporte para lo que no tienen instalado el componente indy sobre todo en lazarus |
#11
|
|||
|
|||
Ayuda!!!!
Buenas tardes.. Amigos soy nuevo en este sitio y para serles sincero no creo tener ni la mitad del conocimiento q tienen ustedes y por eso les pido su ayuda.. Resulta que aqui en venezuela para poder solicitar la cita del pasaporte es necesario ingresar a esta pag: http://www.onidex.com.ve/ pero el servicio brindado por esta pagina es fatal, osea no sirve.. (NO PUEDO CONECTARME CON FACILIDAD) El servicio de la pagina es todo el dia pero las solicitudes se acaban en menos de media hora a partir de las 9 am. Lo que quisiera yo es q me ayuden a poder automatizar la entrada a la pagina sin tener que estar dandole reintentar todo el tiempo y tambien a poder llenar todo lo q pide la pag de forma automatica con agun programa o algo.. Les repito no se mucho en relacion a esto pero puedo aprender.. Espero pronta respuesta y de antemano muchas gracias.. (Para su mayor comodidad puenen in gresar a la pag despues de las 11 am hora venezuela)
|
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
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 |
![]() |
|