网络爬虫框架cetty的实现
功能介绍
maven配置
<dependency>
<groupId>com.jibug.cetty</groupId>
<artifactId>cetty-core</artifactId>
<version>0.1.8</version>
</dependency>
简单demo的实现
package com.leo.demo.cettytest;
import com.google.common.collect.Lists;
import com.jibug.cetty.core.Bootstrap;
import com.jibug.cetty.core.Page;
import com.jibug.cetty.core.Payload;
import com.jibug.cetty.core.Result;
import com.jibug.cetty.core.handler.ConsoleReduceHandler;
import com.jibug.cetty.core.handler.HandlerContext;
import com.jibug.cetty.core.handler.ProcessHandlerAdapter;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.List;
/**
* 抓取天涯论坛文章列表标题
* http://bbs.tianya.cn/list-333-1.shtml
*
* @author Administrator
* @Date 2019/5/8 10:39
* @TODO
*/
public class Tianya extends ProcessHandlerAdapter {
@Override
public void process(HandlerContext ctx, Page page) {
//获取 Document
Document document = page.getDocument();
//dom解析
Elements itemElements = document.
select("div#bbsdoc>div#bd>div#main>div.mt5>table>tbody").
get(2).
select("tr");
List<String> titles = Lists.newArrayList();
for (Element item : itemElements) {
String title = item.select("td.td-title").text();
titles.add(title);
}
//获取Result对象,将我们解析出来的结果向下一个handler传递
Result result = page.getResult();
result.addResults(titles);
//通过fireXXX 方法将本handler 处理的结果向下传递
//本教程直接将结果传递给ConsoleHandler,将结果直接输出控制台
ctx.fireReduce(page);
}
public static void main(String[] args) {
//启动引导类
Bootstrap.
me().
//使用同步抓取
isAsync(false).
//开启一个线程
setThreadNum(1).
//抓取入口url
startUrl("http://bbs.tianya.cn/list-333-1.shtml").
//通用请求信息
setPayload(Payload.custom()).
//添加自定处理器
addHandler(new Tianya()).
//添加默认结果处理器,输出至控制台
addHandler(new ConsoleReduceHandler()).
start();
}
}
提供能力
- 支持注解方式
- 支持代理池
- 支持支持Berkeley 内存数据作为url管理器,提供海量url存储并提高存取效率
- 支持热更新
- 支持爬虫治理
关于demo的github地址如下
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72767.html