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随机选取
  • 支持下载代理服务器随机选取

快速开始

@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;//url中的{user}值@RequestParameter("project")private String project;//url中的{project}值@Text@HtmlField(cssPath=".repository-meta-content")private String title;//抽取页面中的title@Text@HtmlField(cssPath=".pagehead-actions li:nth-child(2) .social-count")private int star;//抽取页面中的star@Text@HtmlField(cssPath=".pagehead-actions li:nth-child(3) .social-count")private int fork;//抽取页面中的fork@Html@HtmlField(cssPath=".entry-content")private String readme;//抽取页面中的readmepublic 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)//使用pc端userAgent.mobile(false)//开始运行.run();}
}

DynamicGecco

DynamicGecco的目的是在不定义SpiderBean的情况下实现爬取规则的运行时配置。其实现原理是采用字节码编程,动态生成SpiderBean,而且通过自定义的GeccoClassLoader实现了抓取规则的热部署。下面是一个简单Demo,更复杂的Demo可以参考com.geccocrawler.gecco.demo.dynamic下的例子。

下面的代码实现了爬取规则的运行时配置:

DynamicGecco.html()
.gecco("https://github.com/{user}/{project}", "consolePipeline")
.requestField("request").request().build()
.stringField("user").requestParameter("user").build()
.stringField("project").requestParameter().build()
.stringField("title").csspath(".repository-meta-content").text(false).build()
.intField("star").csspath(".pagehead-actions li:nth-child(2) .social-count").text(false).build()
.intField("fork").csspath(".pagehead-actions li:nth-child(3) .social-count").text().build()
.stringField("contributors").csspath("ul.numbers-summary > li:nth-child(4) > a").href().build()
.register();//开始抓取
GeccoEngine.create()
.classpath("com.geccocrawler.gecco.demo")
.start("https://github.com/xtuhcy/gecco")
.run();

可以看到,DynamicGecco的方式相比传统的注解方式代码量大大减少,而且很酷的一点是DynamicGecco支持运行时定义和修改规则。

交流联系

  • 博客:http://my.oschina.net/u/2336761/blog
  • 邮箱:xtuhcy@163.com
  • QQ群:531949844

开源协议

请遵守开源协议MIT

Gecco文档-首页相关推荐

  1. 百度云api android,帮助文档首页/百度移动统计API/百度移动统计 Android版SDK - 百度开放云平台...

    百度移动统计SDK 一.简介 百度移动统计SDK(Android)是百度官方推出的移动统计SDK在Android平台上的版本(以下简称SDK).SDK的发行版本(完整下载包为android.zip)中 ...

  2. 阅读“CodeIgniter中国》文档首页》常规主题》安全”之抄录

    一.安全 1.1 URI 安全 Codeigniter严格限制URI中允许出现的字符,以此来减少恶意数据传到你的应用程序的可能性.URI中只允许包含一些字符: a.字母和数字         b.波浪 ...

  3. 【LaTeX中英排版系列】LaTeX中英双标题、作者、机构、摘要文档首页排版指北

    效果图预览 XeLaTeX可编译代码 \documentclass[11pt]{article}\usepackage{xeCJK} % CJK语言环境,使用XeLaTex进行编译 \usepacka ...

  4. 按钮点击打开新页面_PDF怎么打开?如何制作一个PDF格式的文档?

    不知你是否也一样,无论是在网上下载资料还是其他人发送的文件都是PDF格式的.但是应该如何打开PDF文件呢?如何自己制作一个PDF格式的文档呢? 首先说一下如何打开PDF格式的文件,电脑端就比较简单的, ...

  5. 如何快速生成JavaScript文档

    JSDoc Template 记得有大神说过,尽量不要注释,除了JsDoc.JsDoc 可以帮助我们通过 JsDoc 的注释风格快速生成 Api 文档.比如 lodash 文档. JsDoc 可以让开 ...

  6. EasyUI文档学习心得

    概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...

  7. doxygen html chm,使用Doxygen生成全中文的chm帮助文档

    2010年曾经使用Doxygen生成全中文的chm文档.由于Doxygen生成的chm目录文件(index.hhc)本身是使用UTF-8编码的,而古老的chm编译器(HTML Help Worksho ...

  8. 秒建炫酷的开源项目文档,这款神器用起来够优雅

    学习过我的开源项目mall的朋友应该知道,我有一个使用Docsify 搭建的项目文档网站.使用Docsify搭建文档网站虽然简单,但是缺少分类.标签.SEO这类功能,随着文档越来越多,查找起来有点不方 ...

  9. Docute 创建文档网站(docute v3)

    文章目录 Docute 3 创建文档网站 1 Docute 介绍 2 快速开始 2.1 手动创建文件 2.2 自动创建文件 3 自定义定制 3.1 配置文件 3.2 首页 3.3 Landing 页面 ...

最新文章

  1. 关于java中的字符流的一个使用例子
  2. 带你进入String类的易错点和底层本质分析!
  3. Flask+geventwebsocket实现群聊与单聊功能
  4. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
  5. 深入浅出KNN算法(二) sklearn KNN实践
  6. php composer 安装,composer安装的方法步骤(图文)
  7. hbase filter原理_HBase应用|HBase在移动广告监测产品中的应用
  8. @Test 运行 Method xxx should be void、Method xxx should have no parameters
  9. 【EntityFramework系列教程五,翻译】在ASP.NET MVC程序中借助EntityFramework读取相关数据...
  10. 目标检测——阅读代码需要了解的内容
  11. day01:关于惯性导航工具箱的学习与使用:use of the progen
  12. 简易新闻客户端android
  13. 智能物流的常见应用场景及系统
  14. 高德地图引入热力图插件失败
  15. 学术期刊英文标点符号使用规范
  16. 送给天下程序员的诗 (原创)
  17. 村长选举c语言程序,大村长-第一章 选举-爱阅小说网
  18. Ubuntu16(ROS_Kinetic)海康威视网络摄像机(单目)内参标定
  19. 青柠起始页样式书写+清新风格登录界面——Html+Css+JavaScript
  20. 实验室里的AI激情:腾讯优图的升级修炼之路

热门文章

  1. python map函数的作用_python map函数用法详解
  2. 21种方法快速上手谷歌SEO
  3. HIK 海康 Android SDK 简单调用
  4. 认识复杂度和简单排序算法
  5. 发光二极管共阴极共阳极问题
  6. 轻量级网络EdgeViTs论文翻译
  7. coolpad(酷派)真机测试logcat打印日志输出level级别设置
  8. Thread.start() ,工作这么久,还不知道它是怎么让线程跑起来的!
  9. 解决html、php中文乱码问题
  10. linux桌面立方体,为Ubuntu 3D立方体每个桌面显示配置不同壁纸的方法[图文]