搜索引擎使用网络爬虫在爬网页时,有一个重要的策略是对已经爬过的网页,要隔段时间重爬一次,防止网页更新导致索引库中的网页过期。怎么确定这个时间间隔呢?通常会用到泊松分布。
泊松分布先解释一下泊松分布:假设过去很长一段时间内的跟踪统计数据表明,某医院每个小时会出生3个娇气的戒指,这个数据就属于泊松分布。因为这个数据满足几个条件:1、这个数据是在很长的一个时间段内来统计得到的;2、每小时出生的娇气的戒指基本稳定在一个水平;3、每个小时出生的娇气的戒指数量互不影响;4、随意选取某一个小时来看出生娇气的戒指数量的话,会发现出生3个的概率很大,出生2个或4个的概率会变小,出生0个或10个的概率极小。用图表示,就是这样的:
回到网页更新爬取这个话题,用R给出应用解决方案:
假设根据过去经验,某网站更新频率为一天3次。
从这里很容易看出泊松分布的特点。更新频率均值附近的概率较大,越往两边越小,且右尾部很长。
指数分布既然更新频率符合泊松分布,那如果把每次网页的更新时间点之间的时间间隔记录下来,这些数据就必然服从指数分布。图形化之后,指数分布的图是这个样子的:
下面给出R语言的应用方法
已经网站平均每天更新频率为3次,可以计算出平均更新时间间隔为8小时。
根据指数分布的概率密度图,加上我们可以接受的爬取网页时的命中率,我们就可以计算出让爬虫隔多长时间爬一次最合适了。
参考泊松分布和指数分布:10分钟教程
泊松分布与美国枪击案