<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          cetty基于事件分發(fā)的爬蟲框架

          聯(lián)合創(chuàng)作 · 2023-09-29 13:44

          一個輕量級的基于事件分發(fā)的爬蟲框架。

          功能介紹

          • 基于完全自定義事件處理機制的爬蟲框架。
          • 模塊化的設(shè)計,提供強大的可擴展性。
          • 基于HttpClient支持同步和異步數(shù)據(jù)抓取。
          • 支持多線程。
          • 基于Jsoup頁面解析框架提供強大的網(wǎng)頁解析處理能力。

          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
           *
           * @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對象,將我們解析出來的結(jié)果向下一個handler傳遞
                  Result result = page.getResult();
                  result.addResults(titles);
                  
                  //通過fireXXX 方法將本handler 處理的結(jié)果向下傳遞
                  //本教程直接將結(jié)果傳遞給ConsoleHandler,將結(jié)果直接輸出控制臺
                  ctx.fireReduce(page);
              }
          
              public static void main(String[] args) {
                  //啟動引導(dǎo)類
                  Bootstrap.
                          me().
                          //使用同步抓取
                          isAsync(false).
                          //開啟一個線程
                          setThreadNum(1).
                          //抓取入口url
                          startUrl("http://bbs.tianya.cn/list-333-1.shtml").       
                          //通用請求信息
                          setPayload(Payload.custom()).        
                          //添加自定處理器
                          addHandler(new Tianya()).        
                          //添加默認結(jié)果處理器,輸出至控制臺
                          addHandler(new ConsoleReduceHandler()).        
                          start();
              }
          }

          TODO

          • 支持注解方式
          • 支持代理池
          • 支持Berkeley 內(nèi)存數(shù)據(jù)作為url管理器,提供海量url存儲并提高存取效率
          • 支持熱更新
          • 支持爬蟲治理
          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人妻人人操人人玩 | AV天堂9 | 影音先锋中文资源网 | 久久伊人一区二区 | 狠干操|