2011-10-29 10 views
0

私は、URLのリストをナビゲートして、リストのHTMLDocumentを取得するためにウェブブラウザを使用しようと、私はこれを使用する私のコード:リストからhtmldocumentを取得する方法url?

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など)を使用して、.Navigate関数が同期しているようにします。

幸運。

関連する問題