Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 25
Bicho Va por buen camino
Saludos Capo!!

He estado buscando por los foros, y al principio habia visto sugerencias sobre descargar la página en local con un componente Indy HTTP, volcando ese texto a un fichero (que al igual con un WebBrowser lo puedes hacer, no estoy muy puesto en el tema) y buscando el texto escogido dentro del fichero o memo donde tengas el codigo fuente de la página.

Pero luego he encontrado la palabra clave que creo que es la que necesitabas:

PARSER,

Dec, aquí da las pautas para encontrarlo

Espero sea esto lo que buscas, yo sinceramente te lo digo, estoy out en este tema y me he limitado a buscar por los foros e investigar un poco por Delphi.

Saludos
Responder Con Cita
  #2  
Antiguo 17-08-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 25
Bicho Va por buen camino
Sabia yo que con un WebBrowser se podia hacer algo:

Colocas un webbrowser y un memo. En el evento ondocumentcomplete añades esto:

Código Delphi [-]
  MEMO1.Text := WebBrowser1.OleObject.Document.body.innerHTML;

Y ya tienes el codigo fuente de la web en un memo, sólo hay que buscar las etiquetas con un "pos" y ya lo tienes.

Saludos
Responder Con Cita
  #3  
Antiguo 17-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Seguro que usando un TWebbrowser se pueden ir recorriendo cada una de las etiquetas (aunque yo no se como ), o quizá utilizando algún parser. Pero una forma sencilla de hacerlo es obtener la pagina, colocarla en un string, buscar la etiqueta textarea y copiar lo que se encuentra entre la etiqueta de apertura y de cierre. Algo así:

Código Delphi [-]
program gettext;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, WinInet;


function Bajar(Url: string): String;
var
  hNet: HINTERNET;
  hUrl: HINTERNET;
  Buffer: array[0..10240] of Char;
  BytesRead: Cardinal;
begin
  Result := '';
  hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if (hNet <> nil) then
  begin
    hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0,
      INTERNET_FLAG_RELOAD, 0);
    if (hUrl <> nil) then
    begin
      FillChar(Buffer,Sizeof(Buffer),0);
      while (InternetReadFile(hUrl, @Buffer, sizeof(Buffer), BytesRead)) do
      begin
        if (BytesRead = 0) then
          break;
        Result:= Result + String(PChar(@Buffer));
        FillChar(Buffer,Sizeof(Buffer),0);
      end;
      InternetCloseHandle(hUrl);
    end;
    InternetCloseHandle(hNet);
  end;
end;

function ObtenerTexto(Url: string; Etiqueta: string): string;
var
  Str: string;
  i: integer;
begin
  Result:= '';
  // Bajamos la pagina
  Str:= Bajar(Url);
  // Buscamos la etiqueta
  i:= Pos(Uppercase(Etiqueta), Uppercase(Str));
  if i > 0 then
  begin
    // Buscamos el final de la etiqueta
   while (Copy(Str,i,1)<>'>') and (i<Length(Str)) do
      inc(i);
   inc(i);
   // Copiamos el texto hasta encontrar otra etiqueta
   while (Copy(Str,i,1)<>'<') and (i<Length(Str)) do
   begin
      Result:= Result + Copy(Str,i,1);
      inc(i);
   end;
  end;
end;

begin
  Writeln(ObtenerTexto('http://www.mipagina.com/index.html','<textarea'));
  readln;
end.

Última edición por seoane fecha: 17-08-2006 a las 14:58:35.
Responder Con Cita
  #4  
Antiguo 17-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Continuando mi respuesta anterior, podemos bajar de una sola vez todos los artículos, y guardar el contenido de los textarea en archivos de texto:

Código Delphi [-]
procedure BajarTodo(Url: string; Inicio, Final: Integer);
var
  i: integer;
begin
  with TStringList.Create do
  try
    for i:= Inicio to Final do
    begin
      Text:= ObtenerTexto(Url + IntToStr(i),'<textarea');
      SaveToFile(ChangeFileExt(ParamStr(0), '_' + IntToStr(i) + '.txt'));
    end;
  finally
    Free;
  end;
end;

begin
  BajarTodo('http://www.fabricante-pepe.com/articulo.php?referencia=',1000,1010);
end.
Responder Con Cita
  #5  
Antiguo 17-08-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.639
Poder: 10
Emilio Va por buen camino
Bicho gracias por la respuesta, no es ese el camino pero se agradece, por cierto, aparcar está tirao

Seoane funciona perfectamente, muchas gracias por tu rápida y eficaz respuesta.
__________________
Saludos
Emilio
Responder Con Cita
  #6  
Antiguo 17-08-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 25
Bicho Va por buen camino
La intención es lo que cuenta no??

Por cierto como va la tienda? cuanto le queda para abrir?? Ya se ha escogido nombre? (Aunque supongo que no se dirá hasta la inauguración no?)

Saludos
Responder Con Cita
  #7  
Antiguo 17-08-2006
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 22
D-MO Va por buen camino
Cita:
Empezado por Bicho
Por cierto como va la tienda? cuanto le queda para abrir?? Ya se ha escogido nombre?
Pues eso mismo he estado pensando días atras ya que no se ha sabido nada al respecto.

Saludos.
Responder Con Cita
  #8  
Antiguo 17-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Encantado de ser útil, aquí estoy para lo que necesites Emilio
Responder Con Cita
  #9  
Antiguo 17-08-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.639
Poder: 10
Emilio Va por buen camino
Cita:
Empezado por Bicho
La intención es lo que cuenta no??
Por supuesto

Cita:
Empezado por Bicho
Por cierto como va la tienda? cuanto le queda para abrir?? Ya se ha escogido nombre? (Aunque supongo que no se dirá hasta la inauguración no?)
Bueno ya sabes lo que se dice, las cosas de palacio van despacio y encima en época estival como que todavía peor, en principio está previsto abrir entre el 15 de septiembre y 1 de octubre.

Cita:
Empezado por Bicho
Encantado de ser útil, aquí estoy para lo que necesites Emilio
Pues precisamente para el tema de la tienda virtual necesitaba ese coódigo.

Como solicité en su momento ideas para el nombre de la tienda, creo que debo decir cual se ha puesto en el hilo que inicié en la taberna, así que me voy pa la taberna a desvelar el nombrecito y a tomarme una birrita
__________________
Saludos
Emilio
Responder Con Cita
  #10  
Antiguo 18-08-2006
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 Emilio
Bicho gracias por la respuesta, no es ese el camino pero se agradece,
Y ¿puede saberse por qué no es ése el camino? Al menos conduce a donde quieres :

Código Delphi [-]
uses mshtml;

...

var
  Document: IHTMLDocument2;
  HTMLElement: IDispatch;
  TextArea: IHTMLTextAreaElement;

begin
  Document := WebBrowser.Document as IHTMLDocument2;
  HTMLElement := Document.all.item('algo', 0);

  if Assigned(HTMLElement) then
  begin
    if Supports(HTMLElement, IHTMLTextAreaElement, TextArea)then
      ShowMessage(TextArea.value);
  end;
end;

// Saludos
Responder Con Cita
  #11  
Antiguo 18-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
Y ¿puede saberse por qué no es ése el camino? Al menos conduce a donde quieres :
Te digo yo que hay muchos caminos para llegar a Roma...

Cita:
Empezado por Mario
Y no hay razones para no usarlas en Delphi!

http://regexpstudio.com/TRegExpr/TRegExpr.html
Excelente la pinta que tiene ese componente. Gracias por la información.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #12  
Antiguo 18-08-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.639
Poder: 10
Emilio Va por buen camino
Cita:
Empezado por roman
Y ¿puede saberse por qué no es ése el camino? Al menos conduce a donde quieres :
Razón tienes roman, creo que dije eso por error, al entrar al hilo vi a la vez la respuesta de seoane que me sonaba al código que andaba buscando y ya había visto alguna vez algo parecido por tanto me fijé en esa respuesta como solución, la de Bicho hablaba sobre TWebBrowser y lo descarte sin tan siquiera fijarme detenidamente, lo cual está muy mal por mi parte, lo reconozco.

Bicho: rectifico, lamento no haberme fijado mejor.

Muy pocas veces hago uso del foro para emitir preguntas y realmente estoy sorprendido de la cantidad de respuestas válidas que he obtenido, seguramente alguna vez habéis preguntado estando en una ciudad desconocida por una calle y el nativo no sólo se ha limitado en indicarte el trayecto sino que además se ha tomado la molestia de acompañarte para que no te pierdas, pues algo así creo estar sintiendo, INCREIBLE, gracias a todos

Bueno pues debo decir que he puesto en práctica dos de las opciones que se ofrecen en el hilo, la de seoane y la de roman en PHP, ambas funcionan de coña y el resultado es este http://www.brico-pc.com/tienda/artic...f=VBCIMPACTOEM

La web no está terminada, en breve...
__________________
Saludos
Emilio
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Descargar Formulario monicasierrar OOP 8 29-09-2005 18:25:25
Descargar DBE brandolin Conexión con bases de datos 4 15-05-2004 03:07:21
Descargar correo pepe2000 Internet 1 17-02-2004 15:54:40
descargar una extencion migueilichenco Internet 1 28-11-2003 21:23:50
Descargar Firebird.. LucasArgentino Tablas planas 1 17-11-2003 14:58:04


La franja horaria es GMT +2. Ahora son las 08:45:34.


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