Q&A

  • WebBrowser1 와 IdHTTP1 질문좀 할게요.
IdHTTP1 와 WebBrowser1에서 문의 좀 할게요..

음, 웹에서 페이지 소스를 좀 끓어오는 프로그램을 만드는데..요..

Edit1.text 에 url 주소넣고, 소스를 가져오는데,,


WebBrowser1.Navigate(Edit1.Text); // 브라우저로 화면 뷰시킨다음

Memo2.Lines.Text := WebBrowser1.OleObject.Document.DocumentElement.OuterHTML;

이렇게 하는 방법과

memo3.Lines.Text := IdHTTP1.Get(Edit1.Text);

이렇게 하는 방법을 써 봤는데,,

둘다 같은 소스를 가져올줄 알았는데,, 소스값이 조금 틀리더군요..
첫번째 결과 --

<HTML><HEAD><TITLE>잘나가는 사이트</TITLE>
<META content="text/html; charset=euc-kr" http-equiv=Content-Type>

두번째 결과--
<!--사이트 작성일 3933242 설명-->

<html>
        <head>
                <title>잘나가는 사이트</title>
                <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">



속도는 두번째 것이 훨씬 낫더만

두방법의 차이점을 좀 설명 부탁드립니다.
그리고, 두번째 방법으로 해서 첫번째 처럼의 결과를 얻으려면 어떻게 하면
될지도 좀 부탁드릴게요..

(사실 메타태그 내용은 중요한게 아니구요,,
본문내용중 검색시킨값을 찾으려니 tab값등으로 내용이 깨지는 문제가 있군요. 첫번째 방법으로는 검색되어지는 문자가 두번째 방식으로는 못찾아 지는군요,, 속도만 아니면 첫번째 방법 쓰겠구만,,)


1  COMMENTS
  • Profile
    KDDG_BaSTaD 2004.06.17 23:39

    ==> 안녕하세요 BaSTaD 입니다.

    개념이 불확실해서 그런것 같네요.. HTTP는 프로토콜명입니다.. 흔히 WWW과 혼용되서 일컬어지는데.. Hyper Text Transfer Protocol입니다. 브라우저는 어플리케이션 이름이죠.. 명사화 되었지만.. 정확히 말하면 WebBrowser가 HTML 페이지를 가져오기 위해 사용되는 전송 프로토콜이 HTTP입니다.

    웹브라우저는 HTTP를 이용해서 HTML페이지를 가져와서 소스를 파싱해서 보여주기위해 필요한 Image들이며 잡다구리한 플러그인 들도 다 받아다가 로딩해서 VIEW할 수 있게 해주는거지요.. 그러니 당연히 웹브라우저가 느린겁니다.

    TIdHTTP는 HTTP를 구현해 놓은 컴포넌트이구요.. 소스를 가져오실려고 한다면 TIdHTTP로도 충분합니다.. 원리야 같은거니까요.. 그렇지만 프레임까지 포함해서 소스를 받고싶으시다면.. 소스를 파싱해야겠지요 .. 완전한 파싱까지도 필요없고 frameset이나 iframe같은 키워드로도 쉽게 해당 페이지 src를 구할 수 있으니 이걸 다시 TIdHTTP를 통해 가져오기(Get)하시면 됩니다.

    WebBrowser로 로딩을 한 경우에는 이미 DOM으로 파싱을해서 트리구조로 가지고 있기 때문에 편할 수 도 있지만.. 느린것은 어쩔 수 없겠지요...

    단순히 소스만을 긁어오신다면 TIdHTTP로도 충분합니다. WebBrowser는 무겁고 느리기 때문에 별로 추천하고 싶지 않네요...

    소스 추출 팁은 팁란에서 본거 같네요.. 여기나 한델에서 검색해보세요...