보통 홈페이지에는 다양한 종류의 게시판을 사용합니다.
게시판은 보통 번호, 제목, 글쓴이, 작성된 날짜, 첨부파일 등의 내용으로 그 목록이 먼저 나타나게 되는데.....
특정한 주소에 있는 게시판에서 제목과 작성된 날짜만을 추출하여 델파이로 짠 프로그램에 나타나게 하고 싶습니다.
어떻게 해야하나요...
html소스를 델파이 컴포넌트로 받아서 그 중 제목과 날짜만을 취하면 될 것 같은데 도대체 html소스를 받아서 편집을 하는 방법을 모르겠습니다.
간단한 코드가 포함된 좋은 답변 부탁 드립니다.
// 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.