ajax抓取网页内容(原文C#抓取AJAX页面的内容现在的网页有相当一部分)

优采云 发布时间: 2021-11-28 07:16

  ajax抓取网页内容(原文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;

  //页面加载完毕,做一些其他的事情

  }

  }

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线