Fórum Ajuda para Capturar Código Fonte HTML Sem IDHTTP #354301
25/02/2008
0
Preciso capturar o código Fonte de uma pagina HTML e [b:ae2e98670b]Não posso utilizar o TIDHTTP[/b:ae2e98670b]. para isso estou utilizando a procedure abaixo:
[b]procedure TForm1.Button2Click(Sender: TObject); var URL : String ; S:Variant; Begin URL := ´´; URL := ´http://www.telebank.com.br/unisys/apoio/itens.aspx?cod_kit=1´; webbrowser1.navigate(url); S := WebBrowser1.Document; memo1.Clear; Memo1.Lines.Add(S.Body.innerHTML); memo1.Lines.SaveToFile(´C:\memo1.txt´); end;[/b] O problema é que o conteúdo que esta no webbrowser não é o mesmo que esta no campo MEMO, alguém poderia me ajudar?
Ferreia2
Curtir tópico
+ 0Posts
25/02/2008
Onjahyr
Gostei + 0
25/02/2008
Ferreia2
Gostei + 0
25/02/2008
Onjahyr
blz
Gostei + 0
25/02/2008
Ferreia2
A pagina é essa
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1"><title>
.::Relatórios Telebank::.
</title></head>
<body>
<form name="form2" method="post" action="itens.aspx?cod_kit=1" id="form2">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTM1NDgwNDMwNQ9kFgICAw9kFgICAQ88KwANAgAPFgYeC18hRGF0YUJvdW5kZx4JUGFnZUNvdW50AgEeC18hSXRlbUNvdW50AgRkARAWAwIBAgICBRYDPCsABQEAFgIeCkhlYWRlclRleHQFDk7Dum1lcm8gU2VyaWFsPCsABQEAFgIfAwUNQ8OzZGlnbyBQcm9kLjwrAAUBABYCHwMFDUxvY2FsaXphw6fDo28WA2ZmZhYCZg9kFgoCAQ9kFg5mDw8WAh4EVGV4dAUOTW9kZW0gU2VtIENoaXBkZAIBDw8WAh8EBQowNjA3MjQxNzc4ZGQCAg8PFgIfBAUNNzg5ODkxMjIwNzA5OGRkAgMPDxYCHwQFETcvOC8yMDA2IDExOjE3OjQxZGQCBA8PFgIfBAUGJm5ic3A7ZGQCBQ8PFgIfBAUHQ2xpZW50ZWRkAgYPDxYCHwQFAjE4ZGQCAg9kFg5mDw8WAh8EBQNQT1NkZAIBDw8WAh8EBQo2OTEyNjA1ODExZGQCAg8PFgIfBAUQQkk1MTAwUE1UMDAzQ1NUMWRkAgMPDxYCHwQFETcvOC8yMDA2IDExOjE4OjEwZGQCBA8PFgIfBAUGJm5ic3A7ZGQCBQ8PFgIfBAUMVCYjMjMzO2NuaWNvZGQCBg8PFgIfBAUDOTI1ZGQCAw9kFg5mDw8WAh8EBR9MZWl0b3IgZGUgQyYjMjQzO2RpZ28gZGUgQmFycmFzZGQCAQ8PFgIfBAUHNzYxMDMzOGRkAgIPDxYCHwQFAzg0MGRkAgMPDxYCHwQFETcvOC8yMDA2IDExOjE4OjM3ZGQCBA8PFgIfBAUGJm5ic3A7ZGQCBQ8PFgIfBAUHRXN0b3F1ZWRkAgYPDxYCHwQFGHJldG9ybm91IGRvIGNsaWVudGUgMTk2NWRkAgQPZBYOZg8PFgIfBAUIQ2hpcCB0aW1kZAIBDw8WAh8EBRQ4OTU1MDMxMTAwMDA1MzU1NTE5MWRkAgIPDxYCHwQFAThkZAIDDw8WAh8EBRE3LzgvMjAwNiAxMToxOToxM2RkAgQPDxYCHwQFBiZuYnNwO2RkAgUPDxYCHwQFFE1hbnV0ZW4mIzIzMTsmIzIyNztvZGQCBg8PFgIfBAUOQ2hpcCBibG9xdWVhZG9kZAIFDw8WAh4HVmlzaWJsZWhkZBgBBQRncmlkD2dkz2zWgDZox3lQuV6r2mUe7e+K1X0=" />
</div>
<script type="text/javascript">
<!--
var theForm = document.forms[´form2´];
if (!theForm) {
theForm = document.form2;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
<div>
<p align=center><img src="http://www.telebank.com.br/Figs/logoTele_72.jpg" />
<p align=center><font face=arial size=4 color=000066><b>Estoque - Lista de Ítens</b></font></p>
<br />
<table border=0 width=760 align=center>
<tr>
<td>
<div>
<table cellspacing="0" rules="all" border="1" id="grid" style="font-family:Trebuchet MS,Arial;font-size:Small;width:100¬;border-collapse:collapse;">
<tr>
<th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$descricao_produto´)">Produto</a></th><th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$serial_number´)">Número Serial</a></th><th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$cod_produto´)">C&243;digo Prod.</a></th><th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$data_cadastro´)">Cadastrado em</a></th><th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$nota_fiscal´)">NF</a></th><th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$descricao_localizacao´)">Localiza&231;&227;o</a></th><th scope="col"><a href="javascript:__doPostBack(´grid´,´Sort$localizacao_detalhe´)">Detalhe</a></th>
</tr><tr>
<td>Modem Sem Chip</td><td>0607241778</td><td>7898912207098</td><td>7/8/2006 11:17:41</td><td> </td><td>Cliente</td><td>18</td>
</tr><tr style="background-color:#F1FFF5;">
<td>POS</td><td>6912605811</td><td>BI5100PMT003CST1</td><td>7/8/2006 11:18:10</td><td> </td><td>T&233;cnico</td><td>925</td>
</tr><tr>
<td>Leitor de C&243;digo de Barras</td><td>7610338</td><td>840</td><td>7/8/2006 11:18:37</td><td> </td><td>Estoque</td><td>retornou do cliente 1965</td>
</tr><tr style="background-color:F1FFF5;">
[b]<td>Chip tim</td><td>89550311000053555191[/b]</td><td>8</td><td>7/8/2006 11:19:13</td><td> </td><td>Manuten&231;&227;o</td><td>Chip bloqueado</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<p align=center><input type=button onclick="javascript:history.go(-1)" value="Voltar" /></p>
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWCALLwc/3CALep6XoDwLhyLmnAgLsrp7SBAKx0aPLCwLdm9CzBQLyz/WkDwL52MLxBPgaVZ/l1FQ5AJ7jO11wGwyDROA3" />
</div></form>
</body>
</html>Preciso pegar a string [b:8a7255f813]Chip tim</td><td>89550311000053555191[/b:8a7255f813]
mas tendo o fonte na mão o resto é fácil.
Gostei + 0
25/02/2008
Onjahyr
Blz.
Gostei + 0
25/02/2008
Ferreia2
A Video Aula utiliza o IDHTTP e eu não posso usar este componente. Como capturar o dado que eu preciso no Codigo HTML eu sei, o problema é que não estou conseguindo capturar o codigo fonte sem ser pelo componente TIHTTP, Entendeu agora?
Gostei + 0
25/02/2008
Onjahyr
Ahhhh, entendi. Não é a captura da string que você quer... É capturar o código fonte da página não é?
Eu fiz um teste aqui e funcionou beleza....
É isso que vc deseja? Capturar o código HTML da página e colocar num TMemo?
Gostei + 0
25/02/2008
Ferreia2
Ahhhh, entendi. Não é a captura da string que você quer... É capturar o código fonte da página não é? Eu fiz um teste aqui e funcionou beleza.... É isso que vc deseja? Capturar o código HTML da página e colocar num TMemo?
Colega é exatamente isso que estou precisando,. lembrando que não posso utilizar o componente TIDHTTP da Aba Indy.
Gostei + 0
25/02/2008
Onjahyr
[b:718cff4f13]O evento abaixo é do clique de um botão:[/b:718cff4f13]
procedure TForm1.Button1Click(Sender: TObject); var URL : String ; Begin URL := ´´; URL := ´http://www.devmedia.com.br´; webbrowser1.navigate(url); end;
[b:718cff4f13]O evento abaixo é do componente WebBrowser (ObjectInspector):[/b:718cff4f13]
// Este evendo ocorre quando a página estiver totalmente carregada procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var S : Variant; begin S := WebBrowser1.Document; memo1.Clear; Memo1.Text := S.Body.OuterHTML; memo1.Lines.SaveToFile(´C:\memo1.txt´); end;
Blz.
Gostei + 0
27/02/2008
Ferreia2
Gostei + 0
28/08/2015
Andre Marsola
Estou com um problema parecido. Eu já tenho o codigo fonte do HTML em um campo memo.
o Código HTML é este:
<td align="center"> <input id="CallBtn" type="button" class="button" onclick="confirmaChamada(this,'22179192')" value="Confirmar Chamada /> </td> <td align="center"> <input id="CallBtn" type="button" class="button" onclick="confirmaChamada(this,'22463368')" value="Confirmar Chamada /> </td>
Porém preciso "percorrer" linha por linha deste codigo, para localizar o seguinte trecho: "onclick="confirmaChamada(this,'22179192')"
Na Verdade o que eu preciso mesmo é pegar o valor deste parametro "onclick", e jogar isto em um outro campo memo, ou até um GRID qualquer.
No Exemplo acima, eu teria uma lista assim:
confirmaChamada(this,'22179192' confirmaChamada(this,'22463368')
Eu tentei isso aqui, mas não resolveu:
documentoAtivo := WebBrowser1.Document;
Memo1.text := documentoAtivo.Body.OuterHTML;
memo2.lines.Clear;
for i := 0 to Memo1.Lines.Count - 1 do
begin
if pos('confirmaChamada(this,',Memo1.Lines.Strings[i]) > 0 then
begin
ShowMessage(Memo1.Lines.Strings[i]);
pIni := pos('this,',Memo1.Lines.Strings[i])+6;
pFim := pos(#39+')',Memo1.Lines.Strings[i]);
memo2.Lines.Add(Copy(Memo1.Lines.Strings[i], pIni , pFim-pIni)); // -> TENTEI ESTE PARA ADICIONAR SOMENTE O TRECHO
memo2.Lines.Add(Memo1.Lines.Strings[i]); //-> TENTEI ESTE PARA "TENTAR" ADICIONAR A LINHA INTEIRA
end;
ShowMessage('NAO PASSOU'); // MAS EM TODAS AS TENTATIVAS... ENTRAVA AQUI.
end;
Alguém pode me ajudar.
Gostei + 0
28/08/2015
Andre Marsola
Estou com um problema parecido. Eu já tenho o codigo fonte do HTML em um campo memo.
o Código HTML é este:
<td align="center">
<input id="CallBtn" type="button" class="button"
onclick="confirmaChamada(this,'22179192')"
value="Confirmar Chamada />
</td>
<td align="center">
<input id="CallBtn" type="button" class="button"
onclick="confirmaChamada(this,'22463368')"
value="Confirmar Chamada />
</td>
Porém preciso "percorrer" linha por linha deste codigo, para localizar o seguinte trecho: "onclick="confirmaChamada(this,'22179192')"
Na Verdade o que eu preciso mesmo é pegar o valor deste parametro "onclick", e jogar isto em um outro campo memo, ou até um GRID qualquer.
No Exemplo acima, eu teria uma lista assim:
confirmaChamada(this,'22179192')
confirmaChamada(this,'22463368')
Eu tentei isso aqui, mas não resolveu:
documentoAtivo := WebBrowser1.Document;
Memo1.text := documentoAtivo.Body.OuterHTML;
memo2.lines.Clear;
for i := 0 to Memo1.Lines.Count - 1 do
begin
if pos('confirmaChamada(this,',Memo1.Lines.Strings[i]) > 0 then
begin
ShowMessage(Memo1.Lines.Strings[i]);
pIni := pos('this,',Memo1.Lines.Strings[i])+6;
pFim := pos(#39+')',Memo1.Lines.Strings[i]);
memo2.Lines.Add(Copy(Memo1.Lines.Strings[i], pIni , pFim-pIni)); // -> TENTEI ESTE PARA ADICIONAR SOMENTE O TRECHO
memo2.Lines.Add(Memo1.Lines.Strings[i]); //-> TENTEI ESTE PARA "TENTAR" ADICIONAR A LINHA INTEIRA
end;
ShowMessage('NAO PASSOU'); // MAS EM TODAS AS TENTATIVAS... ENTRAVA AQUI.
end;
Parece que o problema tem a ver com o "ENTER" ( #13 + #10 ) no final de cada linha, pois parece que o HTML que está dentro do campo MEMO1, não está com este caracter, e as linhas ficam todas "bagunçadas"
Você pode me ajudar
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)