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

Copiar texto de uma pagina html


Wagner Campanari Pereira

Pergunta

Estou tentando montar um sistema que copie o texto de um site qualquer e me devolva o texto em um edit apenas uma unica palavra. Eu estou usando o ponteiro do mouse para selecionar o texto e usando a função colar. as vezes funciona, mais as vezes ele não cola o texto certo e cola parte do código do delphi. Não entendo se é alguma proteção do site ou o que é? 

SetCursorPos(941, 385);
  Mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,941,385 );
  //SetCursorPos(548, 839);
  Mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,1006,385 );
  Mouse_event(MOUSEEVENTF_LEFTUP,0,0,1006,385 );

Chromium1.Browser.GetFocusedFrame.Copy;

      Edit1.SetFocus;
      Chromium1.Browser.GetFocusedFrame.Paste;
      Edit1.PasteFromClipboard;

  

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

realmente exitem sites que colocam proteção nas paginas para evitar cópias.

https://www.google.com.br/search?ei=9Yf_WfmoH8SuwASA3p7oBQ&q=copiar+texto+html+protegido&o que=copiar+texto+html++&gs_l=psy-ab.1.0.0i22i30k1l5j0i22i10i30k1j0i22i30k1l3j0i22i10i30k1.783437.785618.0.792124.2.2.0.0.0.0.1071.1071.7-1.1.0....0...1.1.64.psy-ab..1.1.1070....0.RuuqmOk5Sn0

o exemplo abaixo, pega o texto da pagina e joga em um Memo, depois usando o comando POS voce pode procurar a palavra que quiser no texto do Memo  e jogar em um Edit

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
 var
  Document: IHtmlDocument2;
begin
  edit1.text:=url;
  document := webbrowser1.document as IHtmlDocument2;
  memo1.lines.add(trim(document.body.innertext));  // pegar o texto
end;

OBS: é só mudar para o  código para o componente Chromium1 em vez do WebBrowser1

Se não for isso, dê um exemplo.

abraço

 

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas é isso mesmo que eu preciso, só que o metodo pelo webbrowser1 não funciona no Chromium.  

Porque ele não aceita o IHtmlDocument2, pesquisando verifiquei ele não suporta.

 https://recalll.co/app/?q=chromium - How can I get IHtmlDocument2 in chrome browser? 

Não compreendi a forma de fazer no Chromium1, pelo link do site.  

 

Link para o comentário
Compartilhar em outros sites

  • 0

Encontrei  esse Código para o chromium, funciona mais para o que eu preciso não da certo, porque os valores que eu tenho que pegar vem de um script em java, mais vou postar para outros que precisarem.

Código:

procedure ShowSource(const SRC: ustring);
begin
  ShowMessage(SRC);
end;

procedure TMainForm.ChromiumLoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer);
begin
  // это событие срабатывает, когда документ загружен
  if (browser <> nil) and (browser.Identifier = Chromium.BrowserId) and
    ((frame = nil) or (frame.IsMain))
  then
    Chromium.Browser.MainFrame.GetSourceProc(ShowSource);
end;

  

preciso pegar os preços das moedas desse site https://hitbtc.com/ da listagem que aparece.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Com relação ao código, faltou colocar a uses

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Edit1: TEdit;
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses MSHTML;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
 var
  Document: IHtmlDocument2;
begin
  edit1.text:=url;
  document := webbrowser1.document as IHtmlDocument2;
  memo1.lines.add(trim(document.body.innertext));  // pegar o texto
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   WebBrowser1.Navigate(Edit1.Text);
   WebBrowser1.Silent;
end;

end.

 informações sobre cotação :

[
  {
    "timestamp": "2017-10-20T20:00:00.000Z",
    "open": "0.050459",
    "close": "0.050087",
    "min": "0.050000",
    "max": "0.050511",
    "volume": "1326.628",
    "volumeQuote": "66.555987736"
  },
  {
    "timestamp": "2017-10-20T20:30:00.000Z",
    "open": "0.050108",
    "close": "0.050139",
    "min": "0.050068",
    "max": "0.050223",
    "volume": "87.515",
    "volumeQuote": "4.386062831"
  }
]

A listagem dos preços não aparecem como texto no Page Source da pagina

tanto que se voce tentar marcar para dar um Copy / Paste voce não consegue

eles tem uma API para isso ... voce já verificou ?

 

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...