分享個人開源爬蟲框架

bronson1發表於2019-03-01

Cetty

一個輕量級的基於事件分發的爬蟲框架。

An event dispatch crawler framework.

分享個人開源爬蟲框架

功能介紹

  • 基於完全自定義事件處理機制的爬蟲框架。
  • 模組化的設計,提供強大的可擴充套件性。
  • 基於HttpClient支援同步和非同步資料抓取。
  • 支援多執行緒。
  • 基於Jsoup頁面解析框架提供強大的網頁解析處理能力。

快速開始

使用Maven

<dependency>
  <groupId>com.jibug.cetty</groupId>
  <artifactId>cetty-core</artifactId>
  <version>0.1.5</version>
</dependency>
複製程式碼

幫助

1.詳細文件:cetty.jibug.com/
2.QQ群

分享個人開源爬蟲框架

3.bug反饋:issues

讓我們來寫第一個demo

/**
 * 抓取天涯論壇文章列表標題
 * http://bbs.tianya.cn/list-333-1.shtml
 *
 * @author heyingcai
 */
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();
    }
}
複製程式碼

歷史版本

版本 說明
0.1.0 支援基本爬蟲功能
0.1.5 1.支援xpath 2.修復新增cookie失效問題 3.優化底層邏輯

TODO

  • 支援註解方式
  • 支援代理池
  • 支援Berkeley 記憶體資料作為url管理器,提供海量url儲存並提高存取效率
  • 支援熱更新
  • 支援爬蟲治理

相關文章