簡體   English   中英

如何在for循環中使用Web瀏覽器控件?

[英]How to use Web Browser Control in for loop?

我正在研究網絡爬蟲,在其中它檢查來自同一網站的學生的成績。 我能夠提交表單並選擇元素,但是問題是我想循環使用Web瀏覽器控件。

for (int i = 3910001; i < 391537; i++)
    {
      webBrowser1.Navigate(url);      
    }

基本上我想導航到url並提交表單,並從返回的HTml選擇一些元素。 所以我用了webBrowser1_DocumentCompleted

private void webBrowser1_DocumentCompleted(object sender, 

    WebBrowserDocumentCompletedEventArgs e)
        {
       // MessageBox.Show("I am in completed");

          HtmlElement form = webBrowser1.Document.GetElementById("form1");
          webBrowser1.Document.GetElementById("RollNo").SetAttribute("value", "100");
          HtmlElement btn = webBrowser1.Document.GetElementById("Submit");
          btn.InvokeMember("click");

        }

我想完成一個文檔然后移至其他文檔,但問題是首先循環完成,然后最后只調用一次webBrowser1_DocumentCompleted
有解決這個問題的方法嗎?
謝謝

您需要刪除循環並將其替換為更復雜的邏輯。
每次完成文檔加載后,您都可以導航到下一個URL:

int count = 3910001;//that's your number
private void webBrowser1_DocumentCompleted(object sender,
    WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElement form = webBrowser1.Document.GetElementById("form1");
    webBrowser1.Document.GetElementById("RollNo").SetAttribute("value", "100");
    HtmlElement btn = webBrowser1.Document.GetElementById("Submit");
    btn.InvokeMember("click");

    ++count;
    if(count<391537)//that's your Number too, but it does not make sense, Count is always smaller than 391537
        webBrowser1.Navigate(url);
}

背景是,WebBrowser只能同時導航到一個網站。 就像您在地址欄中輸入網絡地址並按Enter鍵一樣。 然后,在第一個站點完全加載之前,輸入第二個地址。 第一次加載過程將被取消。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM