2011-10-29 2 views
0

나는 URL의 목록을 탐색하고 목록 HTMLDocument의를 얻기 위해 웹 브라우저를 사용하려고하고 나는이 내 코드를 사용합니다목록 URL에서 목록 htmldocument를 가져 오는 방법은 무엇입니까?

WebBrowser webBrowser1 = new WebBrowser(); 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     string[] url = new string[] { @"http://x2.blogtruyen.com/2010/07/gto-shonan-14-days-chap-22.html", @"http://x2.blogtruyen.com/2010/07/gto-shonan-14-days-chap-23.html", @"http://x2.blogtruyen.com/2010/10/gto-shonan-14-days-chap-24.html" }; 
     foreach (string item in url) 
     { 
      webBrowser1.Navigate(new Uri(item)); 
      webBrowser1.ScriptErrorsSuppressed = true; 
      webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
     } 
    } 
    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     if (this.webBrowser1.ReadyState == WebBrowserReadyState.Complete) 
     { 
      string s = ""; 
      HtmlDocument doc = webBrowser1.Document; 
      HtmlElementCollection images = doc.Images; 
      foreach (HtmlElement item in images) 
      { 
       s += item.GetAttribute("src") + "\r\n"; 
      } 
      MessageBox.Show(s); 
      s = ""; 
     } 
    } 

를하지만 내 응용 프로그램을 실행할 때, 그것은 제대로 작동하지 않을 수있다!

내 질문 :이 문제를 해결하는 방법! 미리 감사드립니다!

답변

1

글쎄, 처음에는 "제대로 작동하지 않습니다"는 무엇이 작동하지 않는지 알려주지 않습니다.

다음, 내 초능력 ...

  1. 이동 루프 외부 .ScriptErrorsSuppressed 할당을 사용.
  2. 루프 외부에서 이벤트 연결을 이동하십시오.
  3. .Navigate는 차단 호출이 아닙니다. 첫 번째 요소에서 탐색을 시작한 다음 이벤트 핸들러의 끝에서 이후의 각 탐색을 수행해야합니다. 또는 (AutoResetEvent와 같은) sync 객체를 사용하여 .Navigate 함수가 동기 된 척합니다.

행운을 빈다.

관련 문제