Scheduler(URL管理)最基本的功能是实现对已经爬取的URL进行标示。 可以实现URL的增量去重。 目前scheduler主要有三种实现方式: 1)内存队列QueueScheduler 2)文件队列FileCacheQueueScheduler 3)Redis队列RedisScheduler
使用setScheduler来设置Scheduler
public static void main(String[] args) {
Spider.create( new MyProcessor() )
.addUrl("https://blog.csdn.net")
.setScheduler(new QueueScheduler())
.run();
}
使用文件保存抓取URL,可以在关闭程序并下次启动时,从之前抓取到的URL继续抓取 (1)创建文件夹E:\scheduler (2)修改代码
public static void main(String[] args) {
Spider.create( new MyProcessor() )
.addUrl("https://blog.csdn.net")
//.setScheduler(new QueueScheduler())//设置内存队列
.setScheduler(new FileCacheQueueScheduler("E:\\scheduler"))//设置文件队列
.run();
}
运行后文件夹E:\scheduler会产生两个文件blog.csdn.net.urls.txt和blog.csdn.net.cursor.txt
使用Redis保存抓取队列,可进行多台机器同时合作抓取 (1)运行redis服务端 (2)修改代码
public static void main(String[] args) {
Spider.create( new MyProcessor() )
.addUrl("https://blog.csdn.net")
//.setScheduler(new QueueScheduler())//设置内存队列
//.setScheduler(new FileCacheQueueScheduler("E:\\scheduler"))//设置文件队列
.setScheduler(new RedisScheduler("127.0.0.1"))//设置Redis队列
.run();
}
RedisScheduler是使用Redis的set进行去重, 其他的Scheduler默认都使用HashSetDuplicateRemover来进行去重。
去重就有三种实现方式,那有什么不同呢?