我正在评估爬行器4j每天~1M爬行我的场景是这样的:我正在获取 URL 并解析其描述、关键字和标题,现在我想将每个 URL 及其单词保存到一个文件中
我已经了解了如何将已爬网数据保存到文件中。但是,由于我要执行许多爬网,因此我希望不同的线程在文件系统上执行保存文件操作(为了不阻塞提取器线程(。这可能与爬虫4j有关吗?如果是这样,如何?
谢谢
考虑使用Queue
(BlockingQueue
或类似(,在其中放置要写入的数据,然后由一个或多个工作线程处理(这种方法不是特定于爬虫4j的(。搜索"生产者消费者"以获得一些一般想法。
您关于如何将Queue
传递给爬虫实例的后续问题,这应该可以解决问题(这只是从查看源代码来看,我没有自己使用 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);