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 17-08-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Descargar parte de una web

Hola,

Necesito realizar la descarga de cierto texto de una web.

Pongo un ejemplo:

Tengo las url de todas las páginas que quiero descargar...

http://www.fabricante-pepe.com/artic...eferencia=1000
http://www.fabricante-pepe.com/artic...eferencia=1001
http://www.fabricante-pepe.com/artic...eferencia=1002

Si cargamos una de esas supuestas urls, obtenemos una página web con mucho html, mucho texto, muchas imágenes etc...

El texto que me interesa se encuentra ubicado entre dos etiquetas HTML concretas

<textarea name="algo">Este es el texto que quiero capturar</textarea>

¿alguna sugerencia de cómo puedo capturar ese texto?

Gracias de antemano.
__________________
Saludos
Emilio
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: 22
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
  #3  
Antiguo 17-08-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
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
  #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: 24
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
  #5  
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: 24
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
  #6  
Antiguo 17-08-2006
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
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
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
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:58:35.


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