2011-07-13 69 views
0
This is the code taken from http://code.google.com/p/crawler4j/ and the name of this file is MyCrawler.java 


public class MyCrawler extends WebCrawler { 

     Pattern filters = Pattern.compile(".*(\\.(css|js|bmp|gif|jpe?g" 
       + "|png|tiff?|mid|mp2|mp3|mp4" 
       + "|wav|avi|mov|mpeg|ram|m4v|pdf" 
       + "|rm|smil|wmv|swf|wma|zip|rar|gz))$"); 

     /* 
     * You should implement this function to specify 
     * whether the given URL should be visited or not. 
     */ 
     public boolean shouldVisit(WebURL url) { 
       String href = url.getURL().toLowerCase(); 
       if (filters.matcher(href).matches()) { 
         return false; 
       } 
       if (href.startsWith("http://www.xyz.us.edu/")) { 
         return true; 
       } 
       return false; 
     } 

     /* 
     * This function is called when a page is fetched 
     * and ready to be processed by your program 
     */ 
     public void visit(Page page) { 
       int docid = page.getWebURL().getDocid(); 
       String url = page.getWebURL().getURL();   
       String text = page.getText(); 
       List<WebURL> links = page.getURLs();    
     } 
} 

這是從哪兒MyCrawler是越來越要求Controller.java代碼..增加數量

public class Controller { 
     public static void main(String[] args) throws Exception { 
       CrawlController controller = new CrawlController("/data/crawl/root"); 
       controller.addSeed("http://www.xyz.us.edu/"); 
       controller.start(MyCrawler.class, 10); 
     } 
} 

所以我只是想確保請問這個線的控制器裝置java文件

controller.start(MyCrawler.class, 10); 

這裏是什麼10的意思。而如果我們增加10到20,然後會是怎樣的效果?任何建議將不勝感激...

回答

3

This網站顯示CrawlController的來源。

從10增加到20會增加抓取工具的數量(每個抓取工具都在自己的線程中) - 研究該代碼會告訴您這會產生什麼影響。

+0

所以這意味着它正在增加線程..對嗎? – ferhan

+0

是的,這是正確的 – KevinDTimm

1

鑑於您在帖子中輸入的名稱,您似乎已經知道它的作用 - 它設置了搜索器線程的數量。至於它會產生什麼效果......主要取決於每個線程將等待I/O的時間 - 主要是網絡和一個小磁盤,以及您擁有多少CPU和磁盤吞吐量。

  • 沒有更多的CPU時間留給
  • 沒有更多的網絡帶寬
  • 沒有更多的磁盤帶寬

對於CPU,不要指望得到:當其中一個發生會發生峯值吞吐量到100% - 數字最大爲80%左右。