Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2005
jmlifi jmlifi is offline
Miembro
 
Registrado: abr 2005
Posts: 188
Poder: 20
jmlifi Va por buen camino
leer archivos HTML

Utilizo Delphi 7
Como puedo leer un archivo HTML? ¿hay alón paquete o componente?
Responder Con Cita
  #2  
Antiguo 24-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿A qué te refieres exactamente con leer un archivo HTML? ¿A mostrar el contenido como en un navegador? ¿A "parsear" dicho archivo en busca de alguna información en concreto? ¿A otra cosa quizá?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 24-08-2005
JulioGO JulioGO is offline
Miembro
 
Registrado: ago 2004
Posts: 94
Poder: 20
JulioGO Va por buen camino
Si se trata de "parsear" lo cual significa que debes reconocer los tags HTML del contenido entonces te recomiendo que visites torry.net y en el formulario de busqueda pongas Parser, ahi encontraras algunos paquetes...

Ojala te sirva

Saludos.
Responder Con Cita
  #4  
Antiguo 25-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Y si lo que quieres es mostrar el archivo HTML tal como se hace en un navegador, echa un vistazo a la pestaña "Internet" de la paleta de componentes de Delphi y averigua el uso y trabaja con el componente "TWebBrowser" que sirve justamente para lo dicho, por ejemplo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 01-09-2005
zastilla zastilla is offline
Miembro
 
Registrado: sep 2004
Posts: 22
Poder: 0
zastilla Va por buen camino
yo tengo una duda parecida: hay algun web browser con opcion de parser.
no pretendo hacer un peer2mail pero si comprender como funciona.
es decir para si usas un parser con yahoo te da error ya que el parser abre una nueva ventana y el yahoo te invita a registrarte de nuevo.
alguien sabe como solucionar esto?
Responder Con Cita
  #6  
Antiguo 02-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Según el programa traductor de Google "parser" significa "programa de análisis". En el caso que nos ocupa se trata de analizar el código fuente de una página Web, esto es, el código HTML que contenga, por ejemplo, en busca de los enlaces, las rutas de las imágenes, el contenido de otras etiquetas HTML, en fin... no tiene que ver con el navegador en sí, como suele decirse.

Creo que se confunden conceptos. En Delphi tú puedes usar un componente "TWebBrowser" para mostrar una página Web, tal como lo hace Internet Explorer, sin ir más lejos. Y existen componentes que te ayudarán a "parsear", esto es, analizar el código de un documento HTML, que puede ser el que se muestre en el "TWebBrowser" u otro cualquiera.

Vamos, que una cosa es mostrar un documento HTML en un navegador y otra analizarlo mediante un "parser"; son cosas distintas y que no se interfieren, al menos no en lo que podría decirse como norma general, porque decir que no se puede hacer algo es mucho decir, se entenderá.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 02-09-2005
zastilla zastilla is offline
Miembro
 
Registrado: sep 2004
Posts: 22
Poder: 0
zastilla Va por buen camino
hola Dec,

muchas gracias por responder. el tema es que me he expresado mal, se lo q es un parser y lo que es un navegador.
vamos a ver, yo tengo un twebbrowser con ese voy a la pagina de yahoo y meto mis datos, accediendo asi a una conexion https (cifrada).
ademas tengo 2 parser uno que si le das una direccion web te baja la page y te muestra su codificacion (parser A) y otro q si le das una pagina web (archivo en el disco duro) te dice lo mismo(parser B).
bien si accedo al yahoo con el webbrowser y le digo al parser A que me analice la pagina del yahoo htpps que estoy viendo en el webbrowser me pasa a la pagina de inicio para que me identifique ya q es cifrada y el parser A lo que hace es abrir una nueva conexion y entonces nasti de plasti. y el parser B no lo puedo usar porque no se guardar una pagina web con el webbrowser.

Me entiendes ahora? por eso digo que si existe un VCL navegador tipo webbrowser que ademas tenga alguna funcion de parser, o bien si es posible con el webbrowser guardar la pagina q estoy viendo para poder analizarla con el parser B

muchas gracias
Responder Con Cita
  #8  
Antiguo 02-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo último que refieres puede hacerse de esta forma:

Código Delphi [-]
  uses
    ActiveX;
  
  procedure TForm1.Button1Click(Sender: TObject);
  var
    PFile: IPersistFile;
  begin
    PFile := WebBrowser1.Document as IPersistFile;
    PFile.Save(StringToOleStr('C:\archivo.html'), False);
  end;
Eso para un "TWebBrowser" como el que acompaña a Delphi. Yo he sacado la información del componente "EmbeddedWB", el cual te proporciona otras sutilezas quizá de interés para el caso: investígalo. Por ejemplo, podrías guardar el documento del "TWebBrowser" en un "Stream", sin necesidad de pasar por ningún archivo.

Tal vez, incluso, sea bien utilizar el "EmbeddedWB" directamente, olvidándonos del "TWebBrowser" que acompaña a Delphi: echa un vistazo en la página Web del componente porque encontrarás no poca información y componentes de código abierto, entre los cuales el que se ha mencionado.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 11-10-2005 a las 20:54:33. Razón: Corrección del texto.
Responder Con Cita
  #9  
Antiguo 02-09-2005
zastilla zastilla is offline
Miembro
 
Registrado: sep 2004
Posts: 22
Poder: 0
zastilla Va por buen camino
muchisimas gracias. Asi da gusto preguntar.

un saludo
Responder Con Cita
  #10  
Antiguo 02-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

He observado que en la página Web del componente "EmbeddedWB" puede encontrarse nomás que la versión 1.16 del mismo, para Delphi 4, 5 y 6. Empero, en Torry's Delphi Pages se encuentra la versión 1.17, ya para Delphi 7 y con soporte de los temas de Windows XP.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 02-09-2005
zastilla zastilla is offline
Miembro
 
Registrado: sep 2004
Posts: 22
Poder: 0
zastilla Va por buen camino
hola Dec (David),lo tuyo es acojonante, muchas gracias.
ciertamente me baje la version 116 y no pude instalarla ya q era hasta delphi 6 y tengo el 7. con el 117 muy bien.
No obstante como no puede usar ese VCL utilice el codigo que me pasaste y la verdad, va muy bien salvo para gmail ya que hay problemillas con los scripts de java, pero ya se me ha ocurrido la forma de solucionarlo.
como no me gusta dejar las cosas a medias voy a tenerminar con el metodo del codigo que me has facilitado para luego hacerlo con el VCL. Pero me he encontrado con otro problema:

todo va de perlas, consigo todos los enlaces de los archivo adjuntos pero al usar el webbroser me sale el mensaje de confirmacion de descarga con el menu para seleccionar el destino. Yo queria hacerlo automatizado pero no se si con el webbrowser se puede hacer que se baje el archivo sin que salga ese menu de confirmacion.

Se te ocurre alguna idea?

muchisimas gracias por todo
Responder Con Cita
  #12  
Antiguo 02-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El código que se muestra más arriba puede usarse para guardar en un archivo el documento que estuviera cargado en el componente "TWebBrowser" (a partir de ahora "navegador"). No aparece, pues, ningún diálogo en que se solicite el destino del documento, porque ya se lo indicamos nosotros programáticamente.

Otra cosa es que quieras guardar en un archivo un documento que no se muestre en el "navegador". Por ejemplo, si tratas de mostrar una hoja de estilos (archivos ".css") en el "navegador" (como se basa en Internet Explorer) este te preguntará dónde guardar el archivo en cuestión, o con qué programa abrirlo: porque el "navegador" no puede visualizarlo.

Si es esto a lo que te refieres (no estoy del todo seguro) en lugar de usar el "navegador" para descargar el archivo podrías usar otros componentes para ello: hay no pocos, pero, uno de ellos podría ser el "TIdHttp" de los componentes Indy, que no pone las cosas demasiado complicadas:

Código Delphi [-]
 uses
   IdHTTP; // De los componentes Indy v9
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
   http: TIdHTTP;
   temp: TFileStream;
 begin
   http := TIdHTTP.Create(Self);
   temp := TFileStream.Create('C:\clubdelphi.css', fmCreate);
   try
     http.Get('http://www.clubdelphi.com/foros/delphi.css', temp);
   finally
     http.Free;
     temp.Free;
   end;
 end;
¿Estoy en lo cierto? ¿Te refieres a otra cosa?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 02-09-2005
zastilla zastilla is offline
Miembro
 
Registrado: sep 2004
Posts: 22
Poder: 0
zastilla Va por buen camino
hola,

desde luego q mal me expreso. perdona.

mira imagina una direccion del tipo "www.loquesea.com/programa.exe"
y lo habres con el webbrowser o con el embeddedwb, bien pues te aparecera un menu para abrirlo, guardarlo, etc..
yo pregunto si con el webbrowser o con el embeddedwb se puede hacer para que me baje ese archivo "programa.exe" sin que aparezca ese menu pero utilizando el webbrowser o el embeddedwb.
ya se q con las indys o con wininet se podria hacer pero a mi no me sirve.

recuerda que estoy intentando entender el peer2mail haciendo un programa que haga mas o menos lo mismo.
necesito el webbrowser o el embeddedwb para parsear las direcciones de los archivos adjuntos de los email con el parser B. con el webbrowser me logueo y si luego uso las indy como la conexion es segura, no me baja nada, me pasa a una pagina web para que me logue de nuevo.

gracias si no he sido capaz de explcarte mi situacion, por favor dimelo e intento volver a explicarlo

Última edición por zastilla fecha: 02-09-2005 a las 20:56:35.
Responder Con Cita
  #14  
Antiguo 02-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Comprendo lo que quieres decir. Pero, habré de lamentar no poder ayudarte. Hasta donde llego con el "TWebBrowser" no podrás hacer lo que precisas, por el motivo mencionado arriba: para los archivos que no puede visualizar requerirá de un programa conque abrirlos o un lugar donde guardarlos.

Lo único que se me ocurre es utilizar un componente para descargar los archivos que refieres. ¿Pero no hemos quedado en que esto no puede hacerse? Sí; sin autentificación... pero hay componentes que permiten descargar archivos previa autentificación. Los componentes Indy son capaces de ello, aunque, nunca intenté algo así y, las pruebas que he hecho para la ocasión no han dado resultados satisfactorios (no sé cómo hacerlo).

¿Haces uso de los componentes de la Jedi Library? Entre los que dispone relacionados con Internet hay algunos que sirven para descargar archivos y permiten la autenticación (al menos en lo que respecta a proporcionar un nombre de usuario y una contraseña) para descargar dichos archivos y quizá resulte más sencillo su uso que los "Indys", pero, para mi tengo que como potentes estos últimos.

En fin, lamento no poder serte de ayuda, porque nunca tuve necesidad de algo así y no sé al cabo si podría hacerse lo que dices inclurso con el "TWebBrowser" y yo, en mi ignorancia, he dicho que no demasiado ligero.

Creo incluso que puede irse más allá que proporcionar un nombre de usuario y una contraseña, quiero decir que podrían descargarse quizás archivos mediante conexiones seguras, claro está, contando con autorización, pero son temas que se me escapan por completo, mal que me pese.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #15  
Antiguo 06-09-2005
madiazg madiazg is offline
Miembro
 
Registrado: sep 2005
Ubicación: Canarias
Posts: 120
Poder: 19
madiazg Va por buen camino
Hola Dec,

me ha interesado mucho el código que has insertado en un mensaje anterior. Soy novato en esto del delphi y hace tiempo que necesitaba una forma fácil de descargar ficheros de internet.

Si eres tan amable, ¿puedes indicarme cómo puedo modificar dicho código para que en el caso de que el fichero que quiero bajarme no exista me salga un mensaje de Error?

¿Sabes de algún documento o alguna WEB donde expliquen en castellano las Indy?

Saludos...
Responder Con Cita
  #16  
Antiguo 06-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por madiazg
me ha interesado mucho el código que has insertado en un mensaje anterior. Soy novato en esto del delphi y hace tiempo que necesitaba una forma fácil de descargar ficheros de internet.
Bueno. Bienvenido al ClubDelphi, en primer lugar. Deja que te diga que yo no sé mucho de los componentes Indy: a poco que te pusieras a buen seguro me aventajarías en ello.

Tal vez te interese saber que existen no pocos componentes que te ayudarán a descargar archivos de Internet, no solamente los mencionados. Si buscas en Torry's Delphi Pages, por poner un caso, encontrarás.

Puede que te interese también descargar e instalar la Jedi Library. Entre los componentes que incluye encontrarás algunos para hacer lo que precisas: con ejemplos de uso todos ellos.

Cita:
Empezado por madiazg
Si eres tan amable, ¿puedes indicarme cómo puedo modificar dicho código para que en el caso de que el fichero que quiero bajarme no exista me salga un mensaje de Error?
Sí; hasta ahí llegamos, aunque puede que no acertemos del todo, tal vez bastaría con capturar la posible excepción que se produjera en caso de que, por ejemplo, el archivo a descargar, o sea, la URL del mismo no existiera. Bastaría con algo así:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 var
  http: TIdHTTP;
  temp: TFileStream;
 begin
  http := TIdHTTP.Create(Self);
  temp := TFileStream.Create('C:\clubdelphi.css', fmCreate);
  try
    try
      http.Get('http://www.clubdelphi.com/foros/noexiste.css', temp);
    except
      on E: Exception do begin
        // Aquí puedes actuar en caso de
        // producirse una excepción/error
      end;
    end;
  finally
    http.Free;
    temp.Free;
  end;
 end;
Cita:
Empezado por madiazg
¿Sabes de algún documento o alguna WEB donde expliquen en castellano las Indy?
Pues, la verdad, aparte de la documentación que puede descargarse en la página Web de los componentes (en inglés, of course) lo cierto es que buscando en Google no parece haber demasiada que digamos.

Ya te digo que tal vez podrías pensar en otros componentes que no fueran los Indy, o, cuando menos, dedicarte a algún componente en concreto de los que se incluyen entre ellos (tal vez yo mismo no usé el más adecuado para descargar archivos) y si, faltalmente, ha de ser en inglés, sírvate de consuelo que será un componente o dos y no todos ellos los que tendrás que acometer.

Por otro lado si te indico los componentes que incluye la Jedi Library para descargar archivos de Internet es porque son bastante sencillos de utilizar: una URL, el archivo de destino, un método "Start", otro "Cancel", eventos "OnProgress", "OnTerminate" y poco más: lo justo, suficiente y necesario para descargar archivos de Internet.

Lamento no poder decirte otra cosa, por el momento. Si te surge cualquier otra duda y está relacionada con este Hilo, adelante con ella; si te surge otra y aun otras que no tengan que ver no temas iniciar otro Hilo con ellas que a buen seguro aquí tratará de ayudársete. Y, de nuevo, bienvenido al ClubDelphi
__________________
David Esperalta
www.decsoftutils.com
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


La franja horaria es GMT +2. Ahora son las 00:42:57.


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