您的位置:首页 > 新闻资讯 >文章内容
几种获取Ajax加载信息的方法
来源:互联网 作者:admin 时间:2019-02-13 10:48:22

    网站为了应对各种爬虫采用了许多的反爬虫策略,即使不能完全杜绝爬虫进行爬取,也能大大降低爬虫的采集速度,比如说网站采用Ajax加载数据,但这些信息爬虫又不能不进行采集,那么爬虫怎么进行采集呢?今天小编为大家介绍几种获取Ajax加载信息的方法


    一、利用phantomjs的一个包装类库


    这个类库很全面,有基于各种浏览的驱动,当然也包括phantomjs,我们就用PhantomJSDriver类来操作。当先下载类库,下载完添加引用,调用,很简单,几行代码就可以。


几种获取Ajax加载信息的方法


    二、利用phantomjs这个开源项目


    这个项目说的通俗点就是一个无界面的基于webkit内核的浏览器,既然是浏览器当然就能获取javascript加载的内容。先简单的介绍下在win7下怎么用这个项目:


    1、下载windows版本,地址http://phantomjs.org/download.html,现在的版本是1.9.1;


    2、下载完,解压缩,放到某个文件夹下;


    3、配置环境变量,把这个文件夹的根目录配置到环境变量中。


    下面我们看怎么用C#来调用,这里用到Process类,具体看代码:


几种获取Ajax加载信息的方法


    上面代码中用到了一个test.js的文件,这个文件的写法需要参考一下phantomjs的api或者它自带的例子,很简单,比较好理解。


几种获取Ajax加载信息的方法


    三、利用WebBrowser控件


    这个方式大家也都知道,也就不多说了,说几个比较重要的地方。首先,我要在DocumentCompleted事件里面完成内容获取的工作,因为该控件是在文档加载完成后触发的。其次,这个事件有个问题,就是说如果在页面中有iframe框架之类的,如果这个iframe加载完成也会触发这个事件,所以我们要做个判断


    if (wb.ReadyState == WebBrowserReadyState.Complete && e.Url.ToString() == wb.Url.ToString())


    这个判断就是说在控件所有内容加载完并且是本页面加载完,而不是某个iframe加载完。然后就可以通过wb.Document.Body.InnerHtml来获取内容。


    以上介绍了几种获取Ajax加载信息的方法,其实三种方式的原理其实是一样的,就是通过浏览器引擎来解析javascript。


相关文章内容简介
推荐阅读
  • 27 2019-05
    代理服务器在网络中的一些用途

    代理服务器在网络中的一些用途,如果能够掌握这些用途,这对于我们的工作会更加有帮助的,那么我们就去了解下代理服务器的一些使用,使用代理服务器都有什么好处呢?

  • 13 2019-02
    爬虫怎么获取Ajax请求的信息

    我们在搜索某一关键词的信息后,服务器只会向我们返回少量的数据,但当我们再次向下刷新的时候,会再次通过Ajax请求返回指定数目的数据。比如当浏览器的滚动条触底时,再次提取数据。

  • 27 2019-06
    动态IP不够用怎么办?

    动态IP不够用怎么办?想换个IP地址,但是重启之后IP地址是换了,但是换来换去也就那么几个的,作用不大,这该怎么办呢?动态IP不够用怎么办?

  • 25 2019-02
    关于爬虫遇到的各种限制问题

    爬虫被禁IP这是个非常常见的问题,应对的方法也唯有换IP了,不然怎么也避免开这IP被封的情况。除了IP被封外,爬虫还是会遇到其他的问题,若是不能成功的伪装过去,那么被发现是迟早的事

  • 09 2019-03
    单线程没效率?多线程效果更佳,常用的几种线程池

    其实单线程远不能满足我们的需求,毕竟单线程的能力有限,不管怎么抓取,让其慢慢积累都是需要时间的,而我们需要的就是抢时间,以更短的时间获得信息。但是单线程的效率太慢了,还不

  • 01 2019-07
    最普及的隐藏IP方法是用代理IP

    现在最普及的隐藏IP方法是用代理IP,如果使用的是商家提高的,例如机灵代理,还是高匿名的,隐藏IP地址的效果最佳!

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961