Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Frames de site - Configurando no embedde Web Browser


Rafazuhdo

Pergunta

Eu consegui fazer o programa para capturar um texto de um site,com o componente (embeddedWB)

Eu tentei capturar dados de texto da fonte de um site ai,mas ele é feito por frames

exemplo: ele carrega o corpo por varias paginas de fora dentro dessa Unica pagina.

<html>
<title>SITE </title>
<head>
<body>
<frame src="topo.php">
<frame src="meio.php">
<frame src="baixo.php">
</head>
</body>
</html>

e tem que configurar nesse codigo aqui abaixo para buscar o texto no frame da pagina topo.php

codigo: edit6.text:= EmbeddedWB1.OleObject.Document.GetElementByID('texto').Value;

Alguém aí por favor pode me ajudar como configurar esse código para buscar o texto no "frame topo.php" ?

Aguardo retornos

Editado por Jonathan Queiroz
Adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

MODERADOR

este codigo aqui servi para trazer um certo texto que está dentro de uma TAG no WEBBROWSER certo?

procedure WBLocateHighlight(WB: TWebBrowser; Text: string);
const
   prefix = '<span style="color:white; background-color: red;">';
   suffix = '</span>';
var
   tr: IHTMLTxtRange;
begin
   if Assigned(WB.Document) then
   begin
     tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
     while tr.findText(Text, 1, 0) do
     begin
       tr.pasteHTML(prefix + tr.htmlText + suffix);
       tr.scrollIntoView(True);
     end;
   end;
end;

COMO EU FAÇO PARA VIZUARLIZAR O TEXTO TRATADO EM UM TMEMO???

AGUARDO QUE ME AJUDEM AI GALERA

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0
este codigo aqui servi para trazer um certo texto que está dentro de uma TAG no WEBBROWSER certo?

procedure WBLocateHighlight(WB: TWebBrowser; Text: string);
O WBLocateHighlight localiza toda a ocorrência de uma string passada como um " parâmetro de Texto " em um documento web carregado em um componente de TWebBrowser passado como " parâmetro de WB ". O fundo da string localizada é tornado vermelho com o texto em branco ( prefix e suffix ). Como eu faço para visualizar o texto tratado em um TMemo ???
procedure WBLocateHighlight(WB: TWebBrowser; Text: string);
const
   prefix = '<span style="color:white; background-color: red;">';
   suffix = '</span>';
var
   tr: IHTMLTxtRange;
begin
   TForm1.Memo1.Clear;
   if Assigned(WB.Document) then
      begin
        tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
        while tr.findText(Text, 1, 0) do
        begin
          tr.pasteHTML(prefix + tr.htmlText + suffix);
          tr.scrollIntoView(True);

          TForm1.Memo1.Lines.Append(prefix + tr.htmlText + suffix);
        end;
      end;
end;

OBS: Se quiser apenas o texto

TForm1.Memo1.Lines.Append(tr.htmlText);

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

MODERADOR, eu coloquei no site as seguintes condiçoes

1- o webbrowser para navegar

1- um butao para navegar o webbrowser

1- tmemo

1- uma pagina rodando no servidor php,com as prefix e suffix igual a do codigo procedure

olha o code:

procedure WBLocateHighlight(WB: TWebBrowser; Text: string);
const
   prefix = '<span style="color:white; background-color: red;">';
   suffix = '</span>';
var
   tr: IHTMLTxtRange;
begin
   Form1.Memo1.Clear;
   if Assigned(WB.Document) then
      begin
        tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
        while tr.findText(Text, 1, 0) do
        begin
          tr.pasteHTML(prefix + tr.htmlText + suffix);
          tr.scrollIntoView(True);

          Form1.Memo1.Lines.Append(prefix + tr.htmlText + suffix);
        end;
      end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WB.Navigate('127.0.0.1/teste.php');
end;
end.

MAS não TA APARECENDO NADA NO TMEMO,TEM QUE FAZER ALGUM BOTAO PARA ATIVAR O PROCEDURE DE TRATAR A CAPTURA DE TEXTO????

Link para o comentário
Compartilhar em outros sites

  • 0
MAS não TA APARECENDO NADA NO TMEMO,TEM QUE FAZER ALGUM BOTAO PARA ATIVAR O PROCEDURE DE TRATAR A CAPTURA DE TEXTO????

Voce só colocou o botão para navegar e onde está o comando para localizar o texto ?

procedure WBLocateHighlight(WB: TWebBrowser; Text: string);
const
   prefix = '<span style="color:white; background-color: red;">';
   suffix = '</span>';
var
   tr: IHTMLTxtRange;
begin
   TForm1.Memo1.Clear;
   if Assigned(WB.Document) then
      begin
        tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
        while tr.findText(Text, 1, 0) do
        begin
          tr.pasteHTML(prefix + tr.htmlText + suffix);
          tr.scrollIntoView(True);

          TForm1.Memo1.Lines.Append(prefix + tr.htmlText + suffix);
        end;
      end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   WB.Navigate('127.0.0.1/teste.php'); // navegar na pagina
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   WBLocateHighlight(WB,'texto procurado'); // localizar o texto na pagina web
end;

Obs: uma vez que o texto seja localizado na página, o memo receberá a string

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei se entendi bem mais veja se esse código te ajuda em alguma coisa:

-------------------------------------------------------------------------------------------------------------------------------

Crie uma nova aplicação, coloque um WebBrowser (paleta Internet), um Memo e um botão no Form.

Substitua todo o código pelo abaixo e faça os links do FormCreate e do Botão.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, OleCtrls, SHDocVw;

type

TForm1 = class(TForm)

WebBrowser1: TWebBrowser;

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses ActiveX;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

WebBrowser1.Navigate('http://www.uol.com.br');

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Text := WebBrowser1.OleObject.Document.documentElement.innerText

end;

initialization

OleInitialize(nil);

finalization

OleUninitialize;

end.

Aí você vai pegar tudo que existe no site, depois é só pesquisar a informação dentro do Memo.

Até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite

Opa mano,esse codigo ai pega tudo que tiver na index,mas em site com IFRAME pega somente isso aqui:

<html>

<head>

<title>iframe</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>

<body>

<iframe id="jj" marginWidth=0 marginHeight=0 src="campo.php" frameBorder=0 width=800 height=600></iframe>

<iframe id="jjj" marginWidth=0 marginHeight=0 src="campo2.php" frameBorder=0 width=800 height=600></iframe>

</body>

</html>

ai to querendo capturar o valores digitados nos input da frame src=''campo.php'' entendeu? =[ ......porke o conteudo todo fica la,ai nesse seu codigo que voce posto nom da pra capturar,tem que ser um que localize a frame e pegue dentro dakela pagina da frame.... mas tem que capturar pela pagina index mesmo onde contem os frames.

:unsure:

Editado por Rafazuhdo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...