• 0
Sign in to follow this  
Wagner Campanari Pereira

Copiar texto de uma pagina html

Question

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;

  

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 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

 

Share this post


Link to post
Share on other 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.  

 

Share this post


Link to post
Share on other 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.

 

Share this post


Link to post
Share on other 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 ?

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this