nodejs抓取动态网页(ajax和Chrome的内核性能相对Trident较好,性能你懂的)

优采云 发布时间: 2021-09-20 20:31

  nodejs抓取动态网页(ajax和Chrome的内核性能相对Trident较好,性能你懂的)

  在Ajax时代,许多网页的内容都是动态加载的,我们的小爬虫只抓取web服务器返回给我们的HTML

  跳过了JS加载部分,即爬虫抓取的网页不完整、不完整。你可以看到下面博客花园的首页

  

  从主页加载中,我们可以看到页面呈现后,将有五个Ajax异步请求。默认情况下,爬虫程序无法抓取Ajax生成的内容

  此时,如果要获取这些动态页面,必须调用浏览器的内核引擎来下载这些动态页面。目前,内核引擎有三个支柱

  三叉戟:即内核。WebBrowser基于此内核,但其可加载性较差

  壁虎:FF的内核比Trident有更好的性能

  WebKit:Safari和chrome的内核性能,你知道,在真实场景中仍然基于它

  好吧,为了简单和方便,让我们使用WebBrowser来玩。使用WebBrowser时,我们应注意以下几点:

  第一:因为WebBrowser是system.windows.forms中的WinForm控件,所以我们需要设置StatThread标志

  第二:WinForm是事件驱动的,控制台不响应事件。所有事件都在windows的消息队列中等待执行。为了不让程序假装死亡

  我们需要调用Doevents方法来转移控制,并让操作系统执行其他事件

  第三:我们需要使用domdocument而不是documenttext来查看WebBrowser中的内容

  通常有两种方法来判断是否加载了动态网页:

  ① : 在这里设置一个最大值,因为每次异步加载JS时,都会触发导航和documentcompleted事件,所以我们需要

  只需将计数值记录在

  ② : 当然,除了通过判断最大值来判断加载是否完成外,我们还可以通过设置定时器来判断,如3S、4S、5S等

  是否已加载web浏览器

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线