断点续爬

1. 续爬配置

断点续爬是指从上次爬取的断点开始继续爬取。

这个功能是很有必要的。比如你一个爬取已经运行好几个小时了,突然由于某种原因停止了(断电、遇到异常或其他原因),总不能重新爬吧?如果开启断点续爬,就可以无缝连接上次爬取结果继续爬了。

使用断点续爬很简单,首先需要开启redis。断点续爬需要redis的支持,用于储存断点等数据。其次简单进行配置即可。

在setAndGetSiteConfig添加以下两行代码即可

    openBreakRestart(true) //开启断点重爬,从上次中断的位置开始爬

    setBreakRedisConfig("127.0.0.1"); //配置redis的IP地址,本地使用127.0.0.1即可

2. 原理解析

断点续爬主要原理是,将解析网页获取到的待爬结果储存到redis中待爬结果集中。爬取时将本次url从redis的待爬结果集中删除,表示已爬。任意时刻redis存储的待爬结果集都是没有爬取但将来会爬取的。所以一旦程序出现意外退出,下次开始时直接查看redis的待爬结果集,若有则加载本结果集,没有才加载startUrl。

redis的待爬结果集储存在redis的Set集合中。命名方式为 "wait_url_key\" (字符串)+ 爬虫类名的小写形式,比如DoubanMovieDemo爬虫类,其在redis储存的待爬集合名为 wait_url_key_doubanmoviedemo_。感兴趣的同学可以看看。

在开启断点续爬的同时,cheetah还会把爬取过的url储存到redis中,称为保存过的结果集。命名方式为

"save_url_key_"(字符串) + 爬虫类名的小写形式。比如DoubanMovieDemo爬虫类,其在redis储存的爬取集合名为 save_url_key_doubanmoviedemo

results matching ""

    No results matching ""