您的位置:首页 > 新闻资讯 >文章内容
几种获取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。


相关文章内容简介
推荐阅读
  • 20 2019-03
    JavaScript渲染的网页,为什么使用IP代理也获取不了

    JavaScript渲染的网页,为什么使用IP代理也获取不了?网站有静态页面,也有动态页面,这经过JavaScript渲染的网页,我们在抓取的时候并没有那么顺利,即使使用了代理IP来突破限制,也不行。那

  • 26 2019-03
    安全代理服务器的软件特色有哪些?

    现在安全代理服务器作用软件在大众看来是必不可少的一个软件,他们可以帮助使用者很多事情,下面就对安全带里服务器的特色软件有哪些?做一些相对应的介绍,这种软件在一定程度上是可

  • 20 2019-03
    明明用了代理ip,还是被封住了,这是为何?

    明明用了代理ip,还是被封住了,这是为何?在做爬虫的时候会遇到一个问题,明明我已经使用爬虫代理ip了,却发现爬虫程序终止了,一查,真实ip被封了?是IP质量的问题吗?

  • 28 2020-01
    电脑可以换ip吗

    随着网络的不断发展,已经成为了我们生活中的一部分,想要上网就需要要有IP地址,相当于我们网络身份证,没有IP地址就没有办法上网。那么,电脑换IP有什么影响呢?

  • 29 2020-05
    使用代理ip被封的原因

    在网络爬虫采集数据信息是必要要用到代理ip,而使用代理ip的最大有点就是突破ip限制,被封的问题。而为什么使用了代理ip还是会经常被封掉?

  • 18 2019-02
    网站常用四种反爬虫,爬虫们如何应对?

    搭建网站,需要考虑反爬虫,否则容易被大量的爬虫影响。网站的反爬虫基本上都是必须要设置的,那么设置哪些反爬虫好呢?哪种反爬虫拦截效果好?今天跟小编去了解下网站常用四种反爬虫

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部