BLOG ESPERANCA

C#,WebBrowser 컨트롤을 이용하여 웹 페이지 정보가져오기. 본문

Program/C / C++ / C#

C#,WebBrowser 컨트롤을 이용하여 웹 페이지 정보가져오기.

yobuce 2010. 6. 9. 14:15
최근 웹 페이지로 유용한 정보들이 많이 공개되고 있습니다.
이런 정보들을 가져다가 정리해 보면 좋을것 같아 수집하는 크롤러를 제작해 보았는데

단순히 string으로 처리를 하니 파싱하는 부분이 너무 복잡해져서, 이런 저런 고민을 하다 C# 윈폼에 내장되어 있는 browser 컨트롤을 사용해보았습니다. 

먼저 Navigate 메소드를 사용해서 원하는 페이지로 접근합니다.
변수.Navigate("주소") 이런식이겠네요. 

위의 페이지가 다 로드되면 

DocumentCompleted 이벤트가 발생합니다. 이부분은 핸들링하시면 원하시는 페이지를 DOM으로 접근하실 수 있어요. 


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{

1. 링크 가져오기  

 foreach (HtmlElement el in webBrowser1.Document.Links)
 {
           string href = el.GetAttribute("href"); 
 }

2. 특정 엘리먼트 값 가져오기 

   HtmlElement el = webBrowser1.Document.All["ctl00_ContentPlaceHolder1_lblAuthCode"];
   string data =  el.InnerText

3. 특정 엘리먼트 값 변경하기( checkbox - 체크하는 예제 ) 

HtmlElement el3 = webBrowser1.Document.All["ctl00_ContentPlaceHolder1_rbSearchContain_17"];
el3.SetAttribute("checked", "checked");

4. 특정 버튼 클릭하기 

HtmlElement el = webBrowser1.Document.All["ctl00_ContentPlaceHolder1_btnContinue_19"];
object obj = el.DomElement;

System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);

}

이런식으로 처리 하실 수 있습니다. 

매크로 등에도 유용하게 쓰일 것으로 생각됩니다.

출처 http://thismoments.tistory.com/54