2021SC@SDUSC
Gecco是一款用java语言开发的轻量化的易用的网络爬虫。作为国内大佬研发的java网络爬虫,Gecco整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架,我们使用者只需要配置一些jquery风格的选择器就能很快的写出一个爬虫。同时这个Gecco框架有优秀的可扩展性,框架基于开闭原则进行设计,对修改关闭、对扩展开放。
以上是gecco爬虫官网的介绍,作为一个java爬虫,它
简单易用,使用jquery风格的选择器抽取元素
支持爬取规则的动态配置和加载
支持页面中的异步ajax请求
支持页面中的javascript变量抽取
利用Redis实现分布式抓取
支持结合Spring开发业务逻辑
支持htmlunit扩展
支持插件扩展机制
支持下载时UserAgent随机选取
支持下载代理服务器随机选取
其中的quick start提供了一个简易的网络爬虫
@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=".pagehead-actions li:nth-child(2) .social-count")
private String star;
@Text
@HtmlField(cssPath=".pagehead-actions li:nth-child(3) .social-count")
private String 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 getStar() {
return star;
}
public void setStar(String star) {
this.star = star;
}
public String getFork() {
return fork;
}
public void setFork(String 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();
}
}
框架概述
在这次项目学习中,我会使用gecco,通过爬取京东,淘宝等商品网站的数据,以及csdn的博客数据,与我的小组成员一道,通过分析原代码,理解网络爬虫的运行原理,内部构造,设计逻辑,举一反三,对这个爬虫框架的内容提出自己的分析和优化。



