Gecco文档-首页
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文档-首页相关推荐
- 百度云api android,帮助文档首页/百度移动统计API/百度移动统计 Android版SDK - 百度开放云平台...
百度移动统计SDK 一.简介 百度移动统计SDK(Android)是百度官方推出的移动统计SDK在Android平台上的版本(以下简称SDK).SDK的发行版本(完整下载包为android.zip)中 ...
- 阅读“CodeIgniter中国》文档首页》常规主题》安全”之抄录
一.安全 1.1 URI 安全 Codeigniter严格限制URI中允许出现的字符,以此来减少恶意数据传到你的应用程序的可能性.URI中只允许包含一些字符: a.字母和数字 b.波浪 ...
- 【LaTeX中英排版系列】LaTeX中英双标题、作者、机构、摘要文档首页排版指北
效果图预览 XeLaTeX可编译代码 \documentclass[11pt]{article}\usepackage{xeCJK} % CJK语言环境,使用XeLaTex进行编译 \usepacka ...
- 按钮点击打开新页面_PDF怎么打开?如何制作一个PDF格式的文档?
不知你是否也一样,无论是在网上下载资料还是其他人发送的文件都是PDF格式的.但是应该如何打开PDF文件呢?如何自己制作一个PDF格式的文档呢? 首先说一下如何打开PDF格式的文件,电脑端就比较简单的, ...
- 如何快速生成JavaScript文档
JSDoc Template 记得有大神说过,尽量不要注释,除了JsDoc.JsDoc 可以帮助我们通过 JsDoc 的注释风格快速生成 Api 文档.比如 lodash 文档. JsDoc 可以让开 ...
- EasyUI文档学习心得
概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...
- doxygen html chm,使用Doxygen生成全中文的chm帮助文档
2010年曾经使用Doxygen生成全中文的chm文档.由于Doxygen生成的chm目录文件(index.hhc)本身是使用UTF-8编码的,而古老的chm编译器(HTML Help Worksho ...
- 秒建炫酷的开源项目文档,这款神器用起来够优雅
学习过我的开源项目mall的朋友应该知道,我有一个使用Docsify 搭建的项目文档网站.使用Docsify搭建文档网站虽然简单,但是缺少分类.标签.SEO这类功能,随着文档越来越多,查找起来有点不方 ...
- Docute 创建文档网站(docute v3)
文章目录 Docute 3 创建文档网站 1 Docute 介绍 2 快速开始 2.1 手动创建文件 2.2 自动创建文件 3 自定义定制 3.1 配置文件 3.2 首页 3.3 Landing 页面 ...
最新文章
- 关于java中的字符流的一个使用例子
- 带你进入String类的易错点和底层本质分析!
- Flask+geventwebsocket实现群聊与单聊功能
- 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
- 深入浅出KNN算法(二) sklearn KNN实践
- php composer 安装,composer安装的方法步骤(图文)
- hbase filter原理_HBase应用|HBase在移动广告监测产品中的应用
- @Test 运行 Method xxx should be void、Method xxx should have no parameters
- 【EntityFramework系列教程五,翻译】在ASP.NET MVC程序中借助EntityFramework读取相关数据...
- 目标检测——阅读代码需要了解的内容
- day01:关于惯性导航工具箱的学习与使用:use of the progen
- 简易新闻客户端android
- 智能物流的常见应用场景及系统
- 高德地图引入热力图插件失败
- 学术期刊英文标点符号使用规范
- 送给天下程序员的诗 (原创)
- 村长选举c语言程序,大村长-第一章 选举-爱阅小说网
- Ubuntu16(ROS_Kinetic)海康威视网络摄像机(单目)内参标定
- 青柠起始页样式书写+清新风格登录界面——Html+Css+JavaScript
- 实验室里的AI激情:腾讯优图的升级修炼之路