`
xtuhcy
  • 浏览: 142166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java爬虫gecco支持htmlunit

阅读更多

java爬虫gecco支持htmlunit

java爬虫gecco发布了1.0.5版本,增加了对htmlunit的支持。htmlunit是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。htmlunit采用的是rhino作为javascript的解析引擎。

使用方法

  • 下载

      <dependency>
          <groupId>com.geccocrawler</groupId>
          <artifactId>gecco-htmlunit</artifactId>
          <version>x.x.x</version>
      </dependency>
    
  • Demo

JD的商品详情信息里的价格的信息是通过ajax异步请求而来的,之前是利用@Ajax注解的方式实现的。这里用htmlunit来自动完成ajax请求。

@Gecco(matchUrl="http://item.jd.com/{code}.html", pipelines="consolePipeline", downloader="htmlUnitDownloader")
public classJDDetailimplementsHtmlBean{

    private static final long serialVersionUID = -377053120283382723L;

    @RequestParameter
    private String code;

    @Text
    @HtmlField(cssPath=".p-price")
    private String price;

    @Text
    @HtmlField(cssPath="#name > h1")
    private String title;

    @Text
    @HtmlField(cssPath="#p-ad")
    private String jdAd;

    @HtmlField(cssPath="#product-detail-2")
    private String detail;

    public String getPrice(){
        return price;
    }

    publicvoidsetPrice(String price){
        this.price = price;
    }

    public String getJdAd(){
        return jdAd;
    }

    publicvoidsetJdAd(String jdAd){
        this.jdAd = jdAd;
    }

    public String getTitle(){
        return title;
    }

    publicvoidsetTitle(String title){
        this.title = title;
    }

    public String getDetail(){
        return detail;
    }

    publicvoidsetDetail(String detail){
        this.detail = detail;
    }

    public String getCode(){
        return code;
    }

    publicvoidsetCode(String code){
        this.code = code;
    }

    publicstaticvoidmain(String[] args)throws Exception {
        HtmlUnitDownloder downloader = new HtmlUnitDownloder();
        HttpRequest request = new HttpGetRequest("http://item.jd.com/1455427.html");
        request.setCharset("GBK");
        GeccoEngine.create()
        .classpath("com.geccocrawler.gecco.htmlunit")
        .downloader(downloader)
        //开始抓取的页面地址
        .start(request)
        //开启几个爬虫线程
        .thread(1)
        .timeout(1000)
        .run();
    }
}

优缺点

使用htmlunit确实能省去很多工作,但是htmlunit也存在很多弊端:

1、效率低下,使用htmlunit后,下载器要将所有js一并下载下来,同时要执行所有js代码,下载一个页面有时需要5~10秒。

2、rhino引擎对js的兼容问题,rhino的兼容性还是存在不少问题的,上述demo就有很多js执行错误。如果大家在抓取时不想看到这些error日志输出可以配置log4j:

log4j.logger.com.gargoylesoftware.htmlunit=OFF

3、使用selenium也可以达到类似目的,selenium本身并不解析js,通过调用不同的浏览器驱动达到模拟浏览器的目的。selenium支持chrome、IE、firefox等多个真实浏览器驱动,也支持htmlunit作为驱动,还支持PhantomJS这种js开发的驱动。

 

driver类型 优点 缺点
真实浏览器driver 真实模拟用户行为 效率、稳定性低
HtmlUnit 速度快 js引擎(Rhinojs)不是主流的浏览器支持的,故对js支持的不够好
PhantomJS 速度中等、模拟行为接近真实 不能模拟不同/特定浏览器的行为
2
3
分享到:
评论

相关推荐

    轻量化的Java网络爬虫 GECCO.zip

    }demo地址:教您使用java爬虫gecco抓取JD全部商品信息(一)教您使用java爬虫gecco抓取JD全部商品信息(二)教您使用java爬虫gecco抓取JD全部商品信息(三)集成Htmlunit下载页面爬虫的监控一个完整的例子,分页处理...

    基于Java和多框架整合的网络爬虫Gecco设计源码

    本项目是基于Java开发的网络爬虫Gecco设计源码,主要使用Java进行开发。项目共包含164个文件,其中Java源代码文件153个,Git忽略配置文件2个,Markdown文档文件2个,YAML配置文件1个,项目许可证文件1个,JPG图片...

    Gecco(java爬虫)

    Gecco是一款用java语言开发的轻量化的易用的网络爬虫。Gecco整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架,让您只需要配置一些jquery风格的选择器就能很快的写出一个爬虫。Gecco框架...

    xmg-gecco-demo-master.zip

    最近对开源的java爬虫Gecco做了一个稳定性测试,测试环境:一台爬虫+web应用服务器,一台mongodb服务器。服务器配置很low,两台都是阿里云最低端的主机,1核+512内存。 单线程测试场景 爬虫采用单线程,测试时间3×...

    Gecco是一款用java语言开发的轻量化的易用的网络爬虫

    Gecco是一款用java语言开发的轻量化的易用的网络爬虫。Gecco整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架,让您只需要配置一些jquery风格的选择器就能很快的写出一个爬虫。

    Gecco网络爬虫-其他

    Gecco 是一款用 java 语言开发的轻量化的易用的网络爬虫。Gecco 整合了 jsoup、...参考gecco-spring支持 htmlunit 扩展,参考gecco-htmlunit支持插件扩展机制支持下载时 UserAgent 随机选取支持下载代理服务器随机选取

    JAVA使用HtmlUnit爬虫工具模拟登陆CSDN案例

    HtmlUnit是一个基于JAVA的爬虫工具,能够模拟浏览器的行为,从而实现自动化的爬虫操作。 在本案例中,我们首先需要引入HtmlUnit和Jsoup的依赖项,使用Maven配置进行依赖项的管理。HtmlUnit提供了一个WebClient类,...

    Gecco 是一款用java语言开发的轻量化的易用的网络爬虫

    Gecco 是一款用 java 语言开发的轻量化的易用的网络爬虫。Gecco 整合了 jsoup、httpclient、fastjson、spring、htmlunit、redission 等优秀框架,让您只需要配置一些 jquery 风格的选择器就能很快的写出一个爬虫。...

    Gecco是一款用java语言开发的轻量化的易用的网络爬虫.zip

    Gecco整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架,让您只需要配置一些jquery风格的选择器就能很快的写出一个爬虫。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集...

    gecco-master.zip

    Gecco是一款基于Java语言开发的网络爬虫框架,因其轻量化、易用性而备受开发者喜爱。这款工具整合了多个优秀的开源库,如jsoup、httpclient、fastjson、spring、htmlunit以及redission,为网络爬虫的开发提供了强大...

    gecco 易用的网络爬虫

    Gecco 是一款用java语言开发的轻量化的易用的网络爬虫,整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架。(使用者请务必遵守当地法律)

    Gecco网络爬虫 v1.3.0

    为您提供Gecco网络爬虫下载,Gecco 是一款用 java 语言开发的轻量化的易用的网络爬虫。Gecco 整合了 jsoup、httpclient、fastjson、spring、htmlunit、redission 等优秀框架,让您只需要配置一些 jquery 风格的选择...

    基于Java易用的轻量化网络爬虫+源代码+文档说明

    Gecco 是一款用 java 语言开发的轻量化的易用的网络爬虫。Gecco 整合了 jsoup、httpclient、fastjson、spring、htmlunit、redission 等优秀框架,让您只需要配置一些 jquery 风格的选择器就能很快的写出一个爬虫。...

    gecco:易于使用的轻型网络爬虫(易用的轻量化网络爬虫)

    什么是Gecco Gecco是使用Java语言开发的易于使用的轻量级Web爬虫。Geccointegriert jsoup,httpclient,fastjson,spring,htmlunit,redission ausgezeichneten框架,让您只需配置多个jQuery样式选择器就可以非常...

Global site tag (gtag.js) - Google Analytics