Q&A

  • idHTTP 로 웹페이지를 불러올때?
procedure TForm1.Button2Click(Sender: TObject);
VAR
   theurl, htmldoc: String;
begin
    theurl := 'http://www.g2b.go.kr'; // 'http://www.delmadang.com'; //
    HTMLDoc := IdHTTP1.Get(TheURL);
    memo1.Lines.Add(HTMLDoc);
end;

이런식으로 불러오면

전체화면이 아닌 하나의 프레임만 불러오는것 같습니다.

결과:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html401/frameset.dtd"><HTML lang="ko">
<HEAD>
<HEAD>
<TITLE>국가종합전자조달</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"></HEAD>
<FRAMESET cols="100%" rows="150,*,0" border="0">
<FRAME src="/main/index_main_top.html" name="tops" frameborder="NO" noresize scrolling="NO" marginwidth=0 marginheight=0>  
<FRAME src="/main/index_main_body.html" name="sub" frameborder="NO" noresize scrolling="YES" marginwidth=0 marginheight=0>  
<FRAME src="/main/index_hidden.html" name="hdn" frameborder="NO" noresize scrolling="NO" marginwidth=0 marginheight=0>  
</HTML>

전체 소스를 불러오려면 어느 부분을 수정해야 하나요?

둘재 동일한 것을 WebBrowser 로 불러올때
procedure TForm1.Button1Click(Sender: TObject);
begin
    WebBrowser1.Navigate('http://www.g2b.go.kr');
    Memo1.Lines.Text := WebBrowser1.OleObject.Document.DocumentElement.OuterHTML;
end;
이렇게 하면 WebBrowser 에서는 나오는데  Memo1 에서 에러가 납니다.
WebBrowser1.OleObject.Document.DocumentElement.OuterHTML;
부분에서 액세스바이오레이션 에러가 나는데 뭐가 잘못되건가요?

www.g2b.go.kr 을 파싱하라는데 이런 건 처음이라서..
전에 한번 하다가 다른 일때문에 중단한 후 다시 하라고 하는데
어디서 부터 해야 하는지...

많은 도움 부탁드립니다.


2  COMMENTS
  • Profile
    steps 2008.04.16 19:38
    webbrowser 가 loading을 끝내기전에 그내용을 읽으려해서 나오는 에러입니다.
    onnavigatecomplete2 나  OnDocumentComplete 와 같이 loading이 끝난후에 발생하는 이벤트를 리용하세요.
    html parser는 여기 자료실에 올라온게 있습니다.
  • Profile
    후초보 2008.04.17 22:00
    감사합니다.
    파싱하는데 정말 힘드네요... 아직 제대로 시작도 못하고 있습니다.