ajax抓取网页内容(原文C#抓取AJAX页面的内容现在的网页有相当一部分)
优采云 发布时间: 2021-11-28 07:16ajax抓取网页内容(原文C#抓取AJAX页面的内容现在的网页有相当一部分)
原生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;
//页面加载完毕,做一些其他的事情
}
}