请问能够实现爬取过程中暂停功能么?
Arvinshu opened this issue · 2 comments
Arvinshu commented
能不能记录爬取的最后一个用户到某个文件中,下次再运行的时候读取保留的信息,继续爬取。
由于爬取过程比较漫长,能够实现本次终止爬取后,下次能够继续爬取就很方便了。
brianway commented
本身就是文件缓存的,关闭后重新启动会从上次结束的位置继续爬。
源码见 ZhihuFolloweePageProcessor
类的 main
方法:
Spider.create(new ZhihuFolloweePageProcessor())
.setScheduler(//new QueueScheduler()
new FixedFileCacheQueueScheduler(pipelinePath)
.setDuplicateRemover(new BloomFilterDuplicateRemover(crawlSize)))
.addPipeline(new FilePipeline(pipelinePath))
.addUrl(generateMemberUrl("hydro-ding"))
.thread(20)
.run();
其中 FixedFileCacheQueueScheduler
就是文件缓存之前下载过的链接。具体原理可以阅读源码,在此不赘述。
另, FixedFileCacheQueueScheduler 是由于 webmagic 0.5.3 有 bug (见 webmagic 的 issue #400 修复FileCacheQueueScheduler的NullPointerException问题 ),我按照作者回答临时修复的。后续 webporter 会升级 webmagic 到 0.6.0,这个类会去掉。
Arvinshu commented
谢谢,我也刚刚看到这个方法。