귀하는 손님 이십니다
로그인
회원가입
  
  델마당 공식 은행계좌
  하나은행 227-910235-83607
  예금주 이상국(운영진)
프로젝트 게시판
투표게시판
델마당소개
기초부터 활용까지! 델파이 교육 - 데브기어
 광고문의 :
강좌, 팁, 정보 강좌, 팁, 정보 입니다.
글내용 - 강좌, 팁, 정보
 IE Web browser Parsing
KIMS
(김연재)
2019-01-13 오후 12:11:37
카테고리: 팁
668회 조회



등록된 파일이 없습니다.
안녕하세요?
매번 도움만 받다가 한번 올려봅니다.

익스플로러 화면에서 HTML을 불러다 데이터를 찾아 저장하는데 정작 원하는 내용이 화면엔 보이는데 HTML Source에 보이지 않아 애를 먹고있다가 한 화면에 Frame이 여러개 있다는것을 알게되었습니다.
모든 Frame의 HTML Source를 Frame별로 저장합니다.

Compiler : Delphi 7

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, OleCtrls, OleServer, mshtml, SHDocVw, ActiveX,
  ComCtrls, ComObj, Clipbrd;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  TempDateS,DateS: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  TempDateS := FormatDateTime('yyyymmddhhmmss', Now);
  DateS := Copy(TempDateS,1,8);
  Edit1.Text := 'www.korea.com';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  Form1 := nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i,x: integer;
  URL,iStr: string;
  IE: Variant;
  Frame: IDispatch;
  FrameDoc: IHTMLDocument2;
begin
  IE := CreateOleObject('InternetExplorer.Application');
  IE.Visible := true;
  URL := Edit1.Text;
  IE.Navigate(URL);
  while IE.Busy do sleep(500);
  sleep(1000);

  x := IE.Document.Frames.Length;
  if x > 0 then
  begin
    for i := 0 to (x - 1) do
    begin
      iStr := IntToStr(i);
      Frame := IE.Document.Frames.Item(i);
      FrameDoc := (Frame as IHTMLWindow2).Document as IHTMLDocument2;
      Memo1.Text := FrameDoc.Get_body.Get_outerHTML;
      Memo1.Lines.SaveToFile('WebPage_'+iStr+'_'+TempDateS+'.txt');
    end;
  end;
  IE.Quit;
  ShowMessage('HTML documents in frames have been saved.');
end;

end.