增加爬虫程序中的线程数

时间:2011-07-13 18:30:57

标签: java web-crawler

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);  
        }
}

所以我只想确保此行在controller.java文件中的含义

controller.start(MyCrawler.class, 10);

这里10的意思是什么..如果我们将这个10增加到20那么效果会是什么......任何建议都将受到赞赏......

2 个答案:

答案 0 :(得分:3)

This网站显示了CrawlController的来源。

从10增加到20会增加抓取工具的数量(每个都在他们自己的线程中) - 研究代码会告诉你这会产生什么样的影响。

答案 1 :(得分:1)

鉴于您在帖子上添加的名称,您似乎已经知道它的作用 - 它设置了爬虫程序线程的数量。至于它会产生什么影响......这在很大程度上取决于每个线程等待I / O的时间 - 主要是网络,一个小磁盘,以及你有多少CPU和磁盘吞吐量。当其中一个发生时,峰值吞吐量将会发生:

  • 不再有CPU剩余时间
  • 不再有网络带宽
  • 不再有磁盘带宽

对于CPU,不要指望达到100% - 最大值为80%