Gecco学习笔记(八)

2021SC@SDUSC

最近在分析Gecco的源代码,所以就想着测试一下java爬虫gecco的稳定性

测试结果:

基本信息

Interval: 5000,

StartTime: "2016-03-22 14:47:40",

ThreadCount: 1,

StarUrlCount: 8

单线程,共有8个初始抓取链接,每个请求抓取完成后休息5秒。

爬虫监控数据​​​​​​

taocan.ctrip.com
  Statistics: "{"exception":134,"serverError":0,"success":11270}"

  vacations.ctrip.com
  Statistics: "{"exception":61,"serverError":0,"success":17548}"

  huodong.ctrip.com
  Statistics: "{"exception":42,"serverError":0,"success":11814}"

  www.tuniu.com
  Statistics: "{"exception":4,"serverError":0,"success":228}"

  temai.tuniu.com
  Statistics: "{"exception":78,"serverError":0,"success":3507}"

  www.lvmama.com
  Statistics: "{"exception":0,"serverError":415,"success":41}"
  http://www.lvmama.com/tuangou/sale-623250 DOWNLOAD ERROR :500
  http://www.lvmama.com/tuangou/sale-612687 DOWNLOAD ERROR :400
  • 结果

从监控数据可以看到:

ctrip.com相关的数据抓取成功率较高,为99.99%,出现的失败都是exception,也就是类似超时之类的错误。

tuniu.com相关的数据抓取成功率也较高,为99.97%,出现的失败也是exception。

lvmama.com的成功率就十分低了,而且返回都是serverError也就是服务器500或者400错误,查看发日志发现可能对方服务器对ip做了访问限制,在成功抓取10多条后就一直报400或者500错误。

##多线程测试场景 爬虫采用3线程,测试时间2×24小时,测试期间系统无异常,jvm内存稳定。测试结果:

  • 基本信息

 Interval: 5000,
  StartTime: "2016-03-26 11:16:57",
  ThreadCount: 3,
  StarUrlCount: 8

3线程,共有8个初始抓取链接,每个请求抓取完成后休息5秒。

爬虫监控数据 

taocan.ctrip.com
  Statistics: "{"exception":58,"serverError":0,"success":19306}"

  vacations.ctrip.com
  Statistics: "{"exception":51,"serverError":0,"success":31402}"

  huodong.ctrip.com
  Statistics: "{"exception":62,"serverError":0,"success":17807}"

  www.tuniu.com
  Statistics: "{"exception":2,"serverError":0,"success":466}"

  temai.tuniu.com
  Statistics: "{"exception":118,"serverError":0,"success":5603}"

  www.lvmama.com
  Statistics: "{"exception":1,"serverError":410,"success":39}"
  http://www.lvmama.com/tuangou/deal-580212 DOWNLOAD ERROR :400
  • 结果

从监控数据可以看到和单线程结果基本一致

总结 从测试中可以发现,开源java爬虫Gecco对系统要求很低,体现其轻量化的特点。无论在单线程还是多线程环境下,系统均能稳定运行。对部分网站访问限制的问题,需要通过代理服务器来完成,Gecco是支持代理服务器随机选取的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gecco是什么 Gecco是一款用java语言开发的轻量化的易用的网络爬虫Gecco整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架,让您只需要配置一些jquery风格的选择器就能很快的写出一个爬虫Gecco框架有优秀的可扩展性,框架基于开闭原则进行设计,对修改关闭、对扩展开放。同时Gecco基于十分开放的MIT开源协议,无论你是使用者还是希望共同完善Gecco的开发者,欢迎pull request。如果你喜欢这款爬虫框架请star 或者 fork!参考手册架构图: 主要特征  简单易用,使用jquery风格的选择器抽取元素  支持页面中的异步ajax请求  支持页面中的javascript变量抽取  利用Redis实现分布式抓取,参考gecco-redis  支持结合Spring开发业务逻辑,参考gecco-spring  支持htmlunit扩展,参考gecco-htmlunit  支持插件扩展机制  支持下载时UserAgent随机选取  支持下载代理服务器随机选取 使用手册:http://www.geccocrawler.com/tag/sysc/快速入门:@Gecco(matchUrl="https://github.com/{user}/{project}", pipelines="consolePipeline") public class MyGithub implements HtmlBean {     private static final long serialVersionUID = -7127412585200687225L;     @RequestParameter("user")     private String user;     @RequestParameter("project")     private String project;     @Text     @HtmlField(cssPath=".repository-meta-content")     private String title;     @Text     @HtmlField(cssPath=".pagehead-actions li:nth-child(2) .social-count")     private int star;     @Text     @HtmlField(cssPath=".pagehead-actions li:nth-child(3) .social-count")     private int fork;     @Html     @HtmlField(cssPath=".entry-content")     private String readme;     public String getReadme() {         return readme;     }     public void setReadme(String readme) {         this.readme = readme;     }     public String getUser() {         return user;     }     public void setUser(String user) {         this.user = user;     }     public String getProject() {         return project;     }     public void setProject(String project) {         this.project = project;     }     public String getTitle() {         return title;     }     public void setTitle(String title) {         this.title = title;     }     public int getStar() {         return star;     }     public void setStar(int star) {         this.star = star;     }     public int getFork() {         return fork;     }     public void setFork(int fork) {         this.fork = fork;     }     public static void main(String[] args) {         GeccoEngine.create()         .classpath("com.geccocrawler.gecco.demo")         .start("https://github.com/xtuhcy/gecco")         .thread(1)         .interval(2000)         .loop(true)         .mobile(false)         .start();     } }demo地址:教您使用java爬虫gecco抓取JD全部商品信息(一)教您使用java爬虫gecco抓取JD全部商品信息(二)教您使用java爬虫gecco抓取JD全部商品信息(三)集成Htmlunit下载页面爬虫的监控一个完整的例子,分页处理,结合spring,mysql入库 标签:网络爬虫  开源爬虫

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值