2015-01-26 4 views
0

다른 클래스의 Crawler4j를 호출해야합니다. Controller 클래스의 main 메서드 대신 setup이라는 간단한 메서드를 사용했습니다.Crawler4j를 다른 클래스에서 실행할 수 있습니까?

class Controller { 
public void setup(String seed) { 
    try { 
     String rootFolder = "data/crawler"; 
     int numberOfCrawlers = 1; 
     CrawlConfig config = new CrawlConfig(); 
     config.setCrawlStorageFolder(rootFolder); 
     config.setPolitenessDelay(300); 
     config.setMaxDepthOfCrawling(1); 

     PageFetcher pageFetcher = new PageFetcher(config); 
     RobotstxtConfig robotstxtConfig = new RobotstxtConfig(); 
     RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher); 
     CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer); 

     controller.addSeed(seed); 
     controller.setCustomData(seed); 
     controller.start(MyCrawler.class, numberOfCrawlers); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

는 다른 클래스에서 다음과 같이 호출하려고했으나 오류를 소품.

Controller c = new Controller(); 
c.setup(seed); 

컨트롤러 클래스에 main 메소드가 없어도 crawler4j를 실행할 수 있습니까? 즉, 이미 메인 메소드가있는 내 애플리케이션에 크롤러를 통합하는 방법을 알고 싶습니다. 도움을 주시면 감사하겠습니다.

답변

0

죄송합니다. 클래스 이름 앞에 액세스 수정자를 배치하는 것을 잊어 버렸습니다. 따라서 오류. 답변 주셔서 감사합니다.

0

원하는대로 크롤러를 실행해도 문제가 없어야합니다. 아래 코드는 테스트를 거쳐 예상대로 작동합니다.

public class Controller { 

    public void setup(String seed) { 
     try { 
      String rootFolder = "data/crawler"; 
      int numberOfCrawlers = 4; 
      CrawlConfig config = new CrawlConfig(); 
      config.setCrawlStorageFolder(rootFolder); 
      config.setPolitenessDelay(300); 
      config.setMaxDepthOfCrawling(2); 

      PageFetcher pageFetcher = new PageFetcher(config); 
      RobotstxtConfig robotstxtConfig = new RobotstxtConfig(); 
      RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher); 
      CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer); 

      controller.addSeed(seed); 
      controller.setCustomData(seed); 
      controller.start(BasicCrawler.class, numberOfCrawlers); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) throws Exception { 
     Controller crawler = new Controller(); 
     crawler.setup("http://www.ics.uci.edu/"); 
    } 
}