简介
Gecco是一个国人写的Java轻量级爬虫框架,官网请戳:Gecco官网。
个人以前用python的爬虫框架也写过一些简单爬虫,但是因为自己不常用python,所以用python写起来并不顺手。偶然情况下,接触Gecco这个Java爬虫框架,尝试用了一下,感觉非常不错,用起来非常简单,非常适合不太懂爬虫基础,又想快速写个爬虫来爬取数据的人。开发环境简单说明
(1) 环境说明:
– JDK版本:JDK 1.8.0
– 开发工具:IntelliJ idea
– 项目类别:Maven项目
(2) 初始化项目环境:
step1: 建立Maven项目,并选择quickstart原型模板
step2:pom文件引入Gecco核心依赖
<dependency>
<groupId>com.geccocrawler</groupId>
<artifactId>gecco</artifactId>
<version>1.1.0</version>
</dependency>
- 使用Gecoo写简单爬虫
这里以爬取M站为例。现在要将该网站的列表数据和列表详情页数据都爬取下来。
(1) 建立主入口类NewsSpiderEntry
// Gecco注解中的matchUrl代表可被解析的url路径,pipelines代表一个处理管道,
//当路径页面被下载下来之后,能够通过管道类对封装到HtmlBean中的数据进行处理
//{page}代表一个路径匹配变量,这个变量可以在类中变量通过@RequestParam注解解析获得
@Gecco(matchUrl = "http://news.missevan.com/news/index?p={page}",
pipelines = {
"mainPipeline", "newsDetailPipe"})
public class NewsSpiderEntry implements HtmlBean {
@Request
private HttpRequest request;
//cssPath语法和Jquery的选择器类似,用于获取mathurl文档流中符合的元素数据
// //NewsSummaryView类看下面,这个类用于封装解析后的列表页数据
@HtmlField(cssPath = ".newslist")
private List<NewsSummaryView> newsSummaryViews;
//Text代表解析text文档(html代表解析html文档,attr代表解析标签属性等)
@Text
@HtmlField(cssPath = ".selected > a")
private String nextPage;
public HttpRequest getRequest() {
return request;
}
public void setRequest(HttpRequest request) {
this.request = request;
}
public String getNextPage() {
return nextPage;
}
public void setNextPage(String nextPage) {
this.nextPage = nextPage;
}
public Lis