ajax抓取网页内容(网页有相当一部分的技术简单一点讲就是事件驱动吧())
优采云 发布时间: 2022-04-07 16:26ajax抓取网页内容(网页有相当一部分的技术简单一点讲就是事件驱动吧())
原C#抓取AJAX页面内容
目前相当一部分网页使用了AJAX技术。所谓AJAX技术,就是简单的事件驱动(当然,这种说法可能并不全面)。提交网址后,服务器给你发送的不是全部都是页面内容,但很大一部分是JS脚本,可以使用了
但是我们用IE浏览页面是正常的,所以唯一的解决办法就是使用WebBrowser控件
但是使用Webbrowser你会发现,在DownloadComplete事件中,你根本无法知道页面是什么时候真正加载的!
当然,带有 Frame 的单个网页可能会触发多次 Complete。即使在Navigated事件中使用了计数器方法,即++和--在DownloadComplete中,执行完JS后仍然无法得到结果。一开始我也觉得很奇怪,直到后来GG相关的AJAX文章,明白原因了。
最终的解决方案是使用WebBrowser+Timer来解决爬取页面的问题
关键还是页面状态,我们可以使用webBrowser1.StatusText,如果返回“完成”,说明页面加载完毕!
示例代码如下:
private void timer1_Tick(object sender, EventArgs e)
{
webBrowser1.导航(Url);
if (webBrowser1.StatusText == "Done")
{
定时器1.启用=假;
//页面加载完毕,做点别的事情
}
}