Heritrix源碼分析(五) 如何讓Heritrix在Ecplise等IDE下編程啟動

來源:互聯網
上載者:User

 本部落格屬原創文章,歡迎轉載!轉載請務必註明出處:http://guoyunsky.javaeye.com/blog/642550

       歡迎加入Heritrix群(QQ): 109148319 , 10447185(已滿)  , Lucene/Solr群(QQ) :  118972724

      在Heritrix注釋裡說Heritrix有三種啟動方式,但我感覺只有兩種:一種是通過tomcat或者JBOSS或者Jetty等Web容器,還有一種自然就是不通過Web直接編程運行。由於第二種方式更適合調試、研究代碼,所以這裡就介紹下它的編程啟動方式吧....這裡貼上範例程式碼以及注釋:

 

import java.io.File;
import javax.management.InvalidAttributeValueException;

import org.archive.crawler.event.CrawlStatusListener;
import org.archive.crawler.framework.CrawlController;
import org.archive.crawler.framework.exceptions.InitializationException;
import org.archive.crawler.settings.XMLSettingsHandler;

public class StartHeritrixByEclipse {
  public static void main(String[] args) throws InterruptedException {
    String orderFile = "D:/heritrix-jobs/startHeritrixByEclipse/order.xml";//order.xml檔案路徑
    File file = null; //order.xml檔案
    CrawlStatusListener listener = null;//監聽器
    XMLSettingsHandler handler = null; //讀取order.xml檔案的處理器
    CrawlController controller = null; //Heritrix的控制器
    try {
      file = new File(orderFile);
      handler = new XMLSettingsHandler(file);
      handler.initialize();//讀取order.xml中的各個配置
      controller = new CrawlController();//
      controller.initialize(handler);//從讀取的order.xml中的各個配置來初始化控制器
      if (listener != null) {
        controller.addCrawlStatusListener(listener);//控制器添加監聽器
      }
      controller.requestCrawlStart();//開始抓取
      /* * 如果Heritrix還一直在運行則等待 */
      while (true) {
        if (controller.isRunning() == false) {
          break;
        }
        Thread.sleep(1000);
      } //如果Heritrix不再運行則停止
      controller.requestCrawlStop();
      } catch (InvalidAttributeValueException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (InitializationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
}

這裡可以發現,其實只要知道一個order.xml路徑就可以開始抓取了(同時還要seeds.txt種子檔案),至於order.xml如何配置可以查看我前面的部落格:http://guoyunsky.javaeye.com/admin/blogs/613412

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.