2016-02-14 27 views
1

我正在评估crawler4j每天约1M次抓取 我的场景是这样的:我抓取URL并解析其描述,关键字和标题,现在我想要保存每个URL和将它的文字合并成单个文件crawler4j将结果异步保存到文件

我已经看到save crawled data to files的可能性。但是,由于我有很多要执行的抓取,我希望不同的线程在文件系统上执行保存文件操作(以便不阻塞抓取器线程)。这可能与crawler4j有关吗?如果是这样,怎么样?

感谢

+0

考虑使用'Queue'来放置要写入的数据,然后通过一个或多个Worker'Thread'处理(这种方法没有'crawler4j'特定的)。寻找“生产者消费者”来获得一些一般的想法。 – qqilihq

+0

@qqilihq你如何与爬虫分享队列?我不会自己实例化爬虫程序 – Gideon

+0

不知道我是否理解这个问题。代码示例将有助于... – qqilihq

回答

1

考虑使用你把要写入的数据,然后由一个/多个工作线程处理的QueueBlockingQueue或类似)(这种做法没什么crawler4j专用)。寻找“生产者消费者”来获得一些一般的想法。

关于如何通过Queue于履带装置的情况下,这应该做的伎俩您的后续问题(这只是从看source代码,不是我自己的使用crawler4j):

final BlockingQueue<Data> queue = … 

// use a factory, instead of supplying the crawler type to pass the queue 
controller.start(new WebCrawlerFactory<MyCrawler>() { 
    @Override 
    public MyCrawler newInstance() throws Exception { 
     return new MyCrawler(queue); 
    } 
}, numberOfCrawlers); 
+0

我完全错过了该工厂。谢谢! – Gideon