ajax抓取网页内容(网页有相当一部分的技术简单一点讲就是事件驱动吧())
优采云 发布时间: 2021-10-22 05:21ajax抓取网页内容(网页有相当一部分的技术简单一点讲就是事件驱动吧())
原生C#抓取AJAX页面内容
当前网页中有相当一部分使用了 AJAX 技术。所谓的AJAX技术就是简单的事件驱动(当然这个说法可能很不完整)。你提交URL后,服务器给你发来的不是全部是页面内容,而是很大一部分是JS脚本,可以使用了
但是我们用IE浏览页面是正常的,所以只有一种解决方法就是使用WebBrowser控件
但是使用Webbrowser,你会发现在DownloadComplete事件中,你无法知道页面什么时候真正加载了!
当然,个别带有 Frame 的网页可能会多次触发 Complete。即使你使用counter方法,也就是在Navigated event++中,在DownloadComplete-中做,在JS完成执行后依然得不到结果。一开始也觉得很奇怪,直到后来GG相关AJAX文章才明白原委。
最终的解决方案是使用WebBrowser+Timer解决页面爬行问题
关键还是页面状态,我们可以使用webBrowser1.StatusText,如果返回“Done”,则表示页面已加载!
示例代码如下:
private void timer1_Tick(object sender, EventArgs e)
{
webBrowser1.Navigate(Url);
if (webBrowser1.StatusText == "Done")
{
定时器1.Enabled = false;
//页面加载完毕,做一些其他的事情
}
}