如何在 for 循环中使用 Web 浏览器控件?
How to use Web Browser Control in for loop?
我正在研究网络爬虫,它检查来自同一网站的学生的结果。我能够提交表单和 select 元素,但问题是我想在循环中使用网络浏览器控件。
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同时只能导航到一个网站。这就像您在地址栏中输入网址并按下回车键。然后在第一个站点完全加载之前输入第二个地址。第一次加载过程将被取消。
我正在研究网络爬虫,它检查来自同一网站的学生的结果。我能够提交表单和 select 元素,但问题是我想在循环中使用网络浏览器控件。
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同时只能导航到一个网站。这就像您在地址栏中输入网址并按下回车键。然后在第一个站点完全加载之前输入第二个地址。第一次加载过程将被取消。