Como salvar arquivos html
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
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

Ivonei
Curtidas 0
Respostas

Beppe
15/12/2003
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;
GOSTEI 0

Ivonei
15/12/2003
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´);
GOSTEI 0

Beppe
15/12/2003
0) A unit é ActiveX.
1) Está certo como chamou.
1) Está certo como chamou.
GOSTEI 0

Ivonei
15/12/2003
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:
GOSTEI 0

Beppe
15/12/2003
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. :)
Tem como, sim. Se eu não me engano, tem uma propriedade InnerText no Document do WebBrowser. Assim que puder, posto um códico. :)
GOSTEI 0

Ivonei
15/12/2003
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é +
GOSTEI 0

Beppe
15/12/2003
Taqui...
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.
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.
GOSTEI 0

Beppe
15/12/2003
Esqueci de mencionar que a unit MsHtml é usada.
GOSTEI 0

Ivonei
15/12/2003
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:
GOSTEI 0

Beppe
15/12/2003
[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?
GOSTEI 0

Ivonei
15/12/2003
[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? :?: :(
Achei que seria isto. O problema é como fazer isto. Como carrego o resultado numa stringlist e depois salvo? :?: :(
GOSTEI 0

Ivonei
15/12/2003
[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
GOSTEI 0