2011-07-13 70 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%左右。