ajax抓取网页内容(IE浏览页面何时才算是真正的加载完毕?(图))
优采云 发布时间: 2021-09-20 21:20ajax抓取网页内容(IE浏览页面何时才算是真正的加载完毕?(图))
当前web页面的相当一部分使用ajax技术。无论在c#中使用webclient还是httprequest,都无法获得正确的结果,因为这些脚本是在服务器发送它们之后执行的
然而,我们使用ie浏览页面是正常的,所以只有一个解决方案是使用WebBrowser控件
但是使用WebBrowser,您会发现在downloadcomplete事件中,您根本无法知道页面何时真正加载
当然,带有框架的单个网页可能会多次触发complete。即使在导航事件中使用counter方法,即++,在downloadcomplete中使用do-,在JS完成后仍然无法获得结果。起初我觉得很奇怪,直到GG来到Ajax文章,明白了原因
最终的解决方案是使用WebBrowser+定时器来解决抓取页面的问题
关键仍然是页面状态,我们可以使用它webBrowser1.Statustext,如果返回“complete”,则表示页面已加载
示例代码如下所示:
private void timer1_Tick(object sender, EventArgs e)
{
textBox1.Text += webBrowser1.StatusText;
if (webBrowser1.StatusText == "完成")
{
timer1.Enabled = false;
//页面加载完成,做一些其它的事
textBox1.Text += webBrowser1.Document.Body.OuterHtml;
//webBrowser1.DocumentText 注意不要用这个,这个和查看源文件一样的
}
}
private void Form1_Load(object sender, EventArgs e)
{
string Url = "http://cd.mei8.cn/face/work/windex.aspx?btn=6";
webBrowser1.Navigate(Url);
}
放置三个控件。将WebBrowser、计时器和文本框计时器设置为可用