저 하늘의 구름처럼~

HTML 코드 상의 모든 LINK 정보 추출하기 본문

DotNet

HTML 코드 상의 모든 LINK 정보 추출하기

강백호v 2009. 4. 15. 02:11

.NET 기반에서 모든 LINK 정보를 추출하는 방법을 MSHTML을 이용하여 하는 방법에 대하여 알아보고자 한다. 우선 MSHTML Library를 사용하기 위해서는 mshtml 참조를 해주어야한다.

- 참조 추가를 위의 화면에서 처럼 해준다.

try

            {

                string strURL = "http://www.naver.com";

                WebClient wc = new WebClient();

                byte[] data = wc.DownloadData(strURL);

                mshtml.HTMLDocumentClass ms = new mshtml.HTMLDocumentClass();

                string strHTML = Encoding.ASCII.GetString(data);

                mshtml.IHTMLDocument2 objMyDoc = (mshtml.IHTMLDocument2)ms;

                objMyDoc.write(strHTML);

                IHTMLElementCollection links = objMyDoc.links;

                foreach (HTMLAnchorElementClass el in links)

                {

                   

                    Console.WriteLine(el.href);

                    Thread.Sleep(1000);

                   // Console.WriteLine(el.outerHTML);

                }

            }

            catch (Exception e)

            {

            }

IHTMLDocument Interface를 이용하여 html document의 내용을 추출하는 방법이다.
IHTMLDocument Interface를  통해 document 내에서 body 안의 모든 element를 검색하거나 image 요소 혹은 link정보들 만 추출하는 것 또한 가능하다.
interface에서 write 함수의 역할은 string 형태의 data를 dom tree 형태로 바꾸어 주는 역할을 한다.
IHTMLElementCollection은 모아온 tag들을 담을 수있는 집합이라고 보면 될것 같다.
item을 통해 모든 컬렉션 혹은 다른 어떤 컬렉션에 접근이 가능하다.