编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

基于事件分发的爬虫框架 cetty(农作物害虫暴发成灾的三大主要因素是什么)

wxchong 2024-08-10 22:14:33 开源技术 17 ℃ 0 评论

一个轻量级的基于事件分发的爬虫框架。

功能介绍

  • 基于完全自定义事件处理机制的爬虫框架。
  • 模块化的设计,提供强大的可扩展性。
  • 基于HttpClient支持同步和异步数据抓取。
  • 支持多线程。
  • 基于Jsoup页面解析框架提供强大的网页解析处理能力。

maven

<dependency>
 <groupId>com.jibug.cetty</groupId>
 <artifactId>cetty-core</artifactId>
 <version>0.1.5</version>
</dependency>

快速入门

/**
 * 抓取天涯论坛文章列表标题
 * http://bbs.tianya.cn/list-333-1.shtml
 *
 */
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();
 }
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表