반응형
웹브라우저 컨트롤 이벤트 중에 DocumentCompleted 라는게 있다.
웹문서가 다 읽혀졌는지를 확인해서 특정 처리를 할 수 있다.
근데 문제는 이 이벤트는 딱 한번만 발생하는게 아니라 웹문서내에 프레임이 들어가 있으면 프레임 갯수만큼 반복이 된다.
보기에는 한페이지 처럼 보이지만 실제 속을 들여다 보면 여러개의 프레임으로 구성되어 있다.
네이버 페이지만 해도 이 이벤트가 6~7번 발생한다.
그러다 보니 원하는 결과를 제대로 얻을 수가 없다.
웹페이지가 모두 로딩되었는지 체크하고 원하는 작업 실행하기
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) // 아래 부분은 한번만 발생
|
아래는 다른 방법
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { // 문서가 정상적으로 로드 완료 되었을 경우만 실행 if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete) { // body 태그 이하 모든 요소들 추출 foreach (HtmlElement elements in this.webBrowser1.Document.Body.Children) { // 각 부모요소안의 모든 요소를 추출 foreach (HtmlElement element in elements.All) { // 특정 태그 목록 추출 switch (element.TagName) { case "IMG": // 이미지 경로 출력 MessageBox.Show(element.GetAttribute("SRC")); break; case "A": // 링크 경로 출력 MessageBox.Show(element.GetAttribute("HREF")); break; } } } } } |
반응형
'Program > C#' 카테고리의 다른 글
RichTextBox 한글 깨짐현상 (0) | 2010.03.19 |
---|---|
[STAThreadAttribute] 단일 스레드 아파트 모드 설정. (0) | 2010.03.19 |
C#으로 구현한 사이트 로그인 후 문서 가져오기 (0) | 2010.03.19 |
타임서버 데이타 취하기 (0) | 2010.03.19 |
Delegate [대리자] 기본 개념과 사용법 (0) | 2010.03.07 |