Fórum Como salvar arquivos html #201219
15/12/2003
0
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
Curtir tópico
+ 0Posts
15/12/2003
Beppe
1 2 3 4 5 6 7 | 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
15/12/2003
Ivonei
1 2 3 4 5 6 7 | 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
15/12/2003
Beppe
1) Está certo como chamou.
Gostei + 0
15/12/2003
Ivonei
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
15/12/2003
Beppe
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
15/12/2003
Ivonei
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
15/12/2003
Beppe
1 2 3 4 5 6 7 8 9 10 | 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
15/12/2003
Beppe
Gostei + 0
16/12/2003
Ivonei
1 2 3 4 5 6 7 8 9 10 | 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
16/12/2003
Beppe
1 2 3 4 5 6 7 8 9 10 | 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
16/12/2003
Ivonei
Achei que seria isto. O problema é como fazer isto. Como carrego o resultado numa stringlist e depois salvo? :?: :(
Gostei + 0
16/12/2003
Ivonei
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
Clique aqui para fazer login e interagir na Comunidade :)