Q&A

  • 게시판에서 제목과 작성된 날짜 만을 추출하는 방법은?
보통 홈페이지에는 다양한 종류의 게시판을 사용합니다.
게시판은 보통 번호, 제목, 글쓴이, 작성된 날짜, 첨부파일 등의 내용으로 그 목록이 먼저 나타나게 되는데.....

특정한 주소에 있는 게시판에서 제목과 작성된 날짜만을 추출하여 델파이로 짠 프로그램에 나타나게 하고 싶습니다.

어떻게 해야하나요...

html소스를 델파이 컴포넌트로 받아서 그 중 제목과 날짜만을 취하면 될 것 같은데 도대체 html소스를 받아서 편집을 하는 방법을 모르겠습니다.

간단한 코드가 포함된 좋은 답변 부탁 드립니다.
1  COMMENTS
  • Profile
    김영대 2003.04.08 09:25
    // 안녕하세요  김영대(http://www.howto.pe.kr)입니다

    // html을 불러오는 예제입니다

    unit Unit1;

    interface

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

    type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation
    {$R *.dfm}

    // 소스를 컴파일하기 위해서는 먼저 Delphi IDE의
    //    Component -> Import ActiveX Control 에서 "Microsft HTML Object Library"를
    //    찾아서 설치해야 합니다
    function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean;
    var
      ps: IPersistStreamInit;
      s: string;
      ss: TStringStream;
      sa: IStream;
    begin
      ps := WB.document as IPersistStreamInit;
      s := '';
      ss := TStringStream.Create(s);
      try
        sa:= TStreamAdapter.Create(ss, soReference) as IStream;
        Result := Succeeded(ps.Save(sa, Bool(True)));
        if Result then ACode.Add(ss.Datastring);
      finally
        ss.Free;
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ShellWindow: IShellWindows;
      WB: IWebbrowser2;
      spDisp: IDispatch;
      IDoc1: IHTMLDocument2;
      k: Integer;
    begin
      Memo1.Lines.Clear;
      
      ShellWindow := CoShellWindows.Create;
      // IE의 모든 instance를 구한다
      for k := 0 to ShellWindow.Count do
      begin
        spDisp := ShellWindow.Item(k);
        if spDisp = nil then
          Continue;
        
        spDisp.QueryInterface(iWebBrowser2, WB);
        if WB <> nil then
        begin
          WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
          if iDoc1 <> nil then
          begin
            WB := ShellWindow.Item(k) as IWebbrowser2;
            begin
              Memo1.Lines.Add('***************************************************');
              Memo1.Lines.Add(WB.LocationURL);
              Memo1.Lines.Add('***************************************************');
              GetHTMLCode(WB, Memo1.Lines);
            end;
          end;
        end;
      end;
    end;

    end.