Como salvar arquivos html

15/12/2003

8

Eu tenho alguns arquivos no formato html e gostaria de salvar só o texto formatado num banco de dados.
Já abri o arquivo com o componente WebBrowser da paleta Internet. Mas não sei como salvar para um banco de dados. Tentei achar alguma função como:
WebBrowser1.selectall e WebBrowser1.copy e depois memo1.paste; ou
WebBrowser1.savetofile(´c:\teste.txt´);
Mas não existe nada parecido. Não posso fazer na unha pelo IE, pois são centenas de arquivos html. Tenho que salvar sem aqueles caracteres de controles das paginas html.
Alguém tem alguma ideia de como posso fazer?

[ ]´s


Responder

Posts

15/12/2003

Beppe

procedure WebSaveToFile(WebBrowser: TWebBrowser; const Filename: String); 
var 
  StrInit: IPersistStreamInit; 
begin 
  if Succeeded(WebBrowser.Document.QueryInterface(IPersistStreamInit, StrInit)) then 
    StrInit.Save(TStreamAdapter.Create(TFileStream.Create(Filename, fmCreate), soOwned), False); 
end;



Responder

15/12/2003

Ivonei

procedure WebSaveToFile(WebBrowser: TWebBrowser; const Filename: String); 
var 
  StrInit: IPersistStreamInit; 
begin 
  if Succeeded(WebBrowser.Document.QueryInterface(IPersistStreamInit, StrInit)) then 
    StrInit.Save(TStreamAdapter.Create(TFileStream.Create(Filename, fmCreate), soOwned), False); 
end;


Olá Ataliba

Obrigado por responder.
Tentei usar, mas diz o seguinte:
[Error] WebDemoF.pas(47): Undeclared identifier: ´IPersistStreamInit´

Qual unit devo declarar?
Devo usar assim? : WebSaveToFile(WebBrowser, ´teste.txt´);


Responder

15/12/2003

Beppe

0) A unit é ActiveX.

1) Está certo como chamou.


Responder

15/12/2003

Ivonei

0) A unit é ActiveX. 1) Está certo como chamou.


Funcionou, mas infelizmente não é o que preciso. :cry:
[b:e819d21849]Ele salva assim:[/b:e819d21849]
<HTML>
<HEAD><TITLE>Padrão</TITLE></HEAD>
<BODY>
<H2>Bem-vindo à WebDemo</h2>
<hr>
<h3>Este é o programa WebDemo do livro: <br>
<i>´Dominando o Delphi 5 - A Bíblia´</i>, escrito por Marco Cant&</h3>
</BODY></HTML>

[b:e819d21849]Preciso que salve assim:[/b:e819d21849]
Bem-vindo à WebDemo
Este é o programa WebDemo do livro:
´Dominando o Delphi 5 - A Bíblia´, escrito por Marco Cantù

Se souber como...
Obrigado mesmo assim. :roll:


Responder

15/12/2003

Beppe

Ah, só texto, sem formatação e imagens?
Tem como, sim. Se eu não me engano, tem uma propriedade InnerText no Document do WebBrowser. Assim que puder, posto um códico. :)


Responder

15/12/2003

Ivonei

Ah, só texto, sem formatação e imagens? Tem como, sim. Se eu não me engano, tem uma propriedade InnerText no Document do WebBrowser. Assim que puder, posto um códico. :)


Beleza. Vou dar uma olhada. :)
Mas se você puder mandar um código é melhor, porque pode ser que eu não descubra nada. :lol:

Até +


Responder

15/12/2003

Beppe

Taqui...

function GetPlainTextOnBrowser(WebBrowser: TWebBrowser): WideString;
var
  Doc: IHTMLDocument2;
begin
  Doc := WebBrowser.Document as IHTMLDocument2;
  repeat
    Application.ProcessMessages;
  until Assigned(Doc.body);
  Result := Doc.body.innerText;
end;


Aquele loop geralmente não seria necessário, mas pelo que percebi no seu caso, ele é sim. Isso é porque ao carregar o browser com uma página ele não faz isso imediatamente. Mas pelo testei, o browser termina quando tiver um Document.body.


Responder

15/12/2003

Beppe

Esqueci de mencionar que a unit MsHtml é usada.


Responder

16/12/2003

Ivonei

Taqui...
function GetPlainTextOnBrowser(WebBrowser: TWebBrowser): WideString;
var
  Doc: IHTMLDocument2;
begin
  Doc := WebBrowser.Document as IHTMLDocument2;
  repeat
    Application.ProcessMessages;
  until Assigned(Doc.body);
  Result := Doc.body.innerText;
end;


Ótimo, mas como devo usar? :lol:

No OnClick do Button:
GetPlainTextOnBrowser(WebBrowser1) ???

Depois de procurar e achar a unit MsHtml é que percebi sua outra msg a respeito. :roll:


Responder

16/12/2003

Beppe

[quote:c0bcd37fe7=´Ataliba´]Taqui...
function GetPlainTextOnBrowser(WebBrowser: TWebBrowser): WideString;
var
  Doc: IHTMLDocument2;
begin
  Doc := WebBrowser.Document as IHTMLDocument2;
  repeat
    Application.ProcessMessages;
  until Assigned(Doc.body);
  Result := Doc.body.innerText;
end;


Ótimo, mas como devo usar? :lol:

No OnClick do Button:
GetPlainTextOnBrowser(WebBrowser1) ???

Depois de procurar e achar a unit MsHtml é que percebi sua outra msg a respeito. :roll:[/quote:c0bcd37fe7]

A função retorna uma string Unicode. Pode carregá-la numa stringlist e salvar num arquivo, falow?


Responder

16/12/2003

Ivonei

[color=blue:8ab378bf1a]A função retorna uma string Unicode. Pode carregá-la numa stringlist e salvar num arquivo, falow?[/color:8ab378bf1a]

Achei que seria isto. O problema é como fazer isto. Como carrego o resultado numa stringlist e depois salvo? :?: :(


Responder

16/12/2003

Ivonei

[color=blue:9d42d58203]A função retorna uma string Unicode. Pode carregá-la numa stringlist e salvar num arquivo, falow?[/color:9d42d58203] Achei que seria isto. O problema é como fazer isto. Como carrego o resultado numa stringlist e depois salvo? :?: :(


Esquece Ataliba

Já consegui. Estava usando errado, assim:
Memo1.Lines.Add[b:9d42d58203]Strings[/b:9d42d58203](GetPlainTextOnBrowser(WebBrowser1));

Era assim:
Memo1.Lines.Add(GetPlainTextOnBrowser(WebBrowser1));

Muito obrigado pela ajuda. :D


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira