2012-09-21 76 views
0

我正在嘗試使用crawler4j,因爲它顯示在this示例中使用,無論我如何定義爬網程序的數量或更改根文件夾我繼續從代碼中獲取此錯誤:在crawler4j上確定參數

「所需要的參數: rootFolder(它將包含中間抓取數據) numberOfCralwers(併發線程)」 主要的代碼如下:

public class Controller { 

    public static void main(String[] args) throws Exception { 

      if (args.length != 2) { 
        System.out.println("Needed parameters: "); 
        System.out.println("\t rootFolder (it will contain intermediate crawl data)"); 
        System.out.println("\t numberOfCralwers (number of concurrent threads)"); 
        return; 
      } 

      /* 
      * crawlStorageFolder is a folder where intermediate crawl data is 
      * stored. 
      */ 
      String crawlStorageFolder = args[0]; 


      /* 
      * numberOfCrawlers shows the number of concurrent threads that should 
      * be initiated for crawling. 
      */ 
      int numberOfCrawlers = Integer.parseInt(args[1]); 

也有類似問題,問我想要什麼知道here,但我並不完全理解解決方案,就像我在那裏鍵入java BasicCrawler Controller「arg1」「arg2」。我在Eclipse上運行這個代碼,對於編程世界我還是相當新的。如果有人幫我理解這個問題,我會非常感激

回答

0

如果當你運行文件時你沒有提供任何參數,你會得到這個錯誤。 將以下內容作爲評論或代碼刪除。

if (args.length != 2) { 
       System.out.println("Needed parameters: "); 
       System.out.println("\t rootFolder (it will contain intermediate crawl data)"); 
       System.out.println("\t numberOfCralwers (number of concurrent threads)"); 
       return; 
     } 

然後將根文件夾設置爲您想要存儲元數據的文件夾。

0

要在您的項目中使用crawler4j,您必須創建兩個類。其中一個是CrawlController(根據參數啓動爬蟲),另一個是Crawler。

只要運行在控制器類中的主要方法,看看抓取網頁

這裏是Controller.java文件:

import edu.uci.ics.crawler4j.crawler.CrawlConfig; 
import edu.uci.ics.crawler4j.crawler.CrawlController; 
import edu.uci.ics.crawler4j.fetcher.PageFetcher; 
import edu.uci.ics.crawler4j.robotstxt.RobotstxtConfig; 
import edu.uci.ics.crawler4j.robotstxt.RobotstxtServer; 

public class Controller { 
public static void main(String[] args) throws Exception { 


    RobotstxtConfig robotstxtConfig2 = new RobotstxtConfig(); 

    System.out.println(robotstxtConfig2.getCacheSize()); 
    System.out.println(robotstxtConfig2.getUserAgentName()); 

    String crawlStorageFolder = "/crawler/testdata"; 
    int numberOfCrawlers = 4; 
    CrawlConfig config = new CrawlConfig(); 
    config.setCrawlStorageFolder(crawlStorageFolder); 

    PageFetcher pageFetcher = new PageFetcher(config); 
    RobotstxtConfig robotstxtConfig = new RobotstxtConfig(); 

    System.out.println(robotstxtConfig.getCacheSize()); 
    System.out.println(robotstxtConfig.getUserAgentName()); 

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

    controller.addSeed("http://cyesilkaya.wordpress.com/"); 
    controller.start(Crawler.class, numberOfCrawlers); 
    } 
    } 

這裏是Crawler.java文件:

import java.io.IOException; 
    import edu.uci.ics.crawler4j.crawler.Page; 
    import edu.uci.ics.crawler4j.crawler.WebCrawler; 
    import edu.uci.ics.crawler4j.url.WebURL; 

    public class Crawler extends WebCrawler { 

    @Override 
    public boolean shouldVisit(WebURL url) { 
     // you can write your own filter to decide crawl the incoming URL or not. 
     return true; 
    } 

    @Override 
    public void visit(Page page) {   
     String url = page.getWebURL().getURL(); 
     try { 
     String url = page.getWebURL().getURL(); 
       System.out.println("URL: " + url); 
    } 
    catch (IOException e) { 
    } 
     } 
    } 
0

在Eclipse: - >點擊運行 - >點擊運行配置...

在彈出窗口:

首先,左列:請確保您的應用程序被選中在子目錄Java應用程序中,否則創建一個新的(點擊新的)。

然後在窗口中央,走在「參數」

寫在「程序參數」你的論點一旦你寫你的第一個參數按該參數Seconde系列進入,等等...(=換行符因爲ARGS是[])

然後點擊Apply

,然後單擊運行。