4 带偏好的爬虫
有时,在URL队列中选择需要抓取的URL时,不一定按照队列“先进先出”的方法进行选择。而把重要的URL先从队列中“挑”出来进行抓取。这种策略也称作“页面选择”(Page Selection)。这可以使有限的网络资源照顾重要性高的网页。
那么哪些网页是重要性高的网页呢?
判断网页的重要性的因素很多,主要有链接的欢迎度(知道链接的重要性了吧)、链接的重要度和平均链接深度、网站质量、历史权重等主要因素。
链接的欢迎度主要是由反向链接(backlinks,即指向当前URL的链接)的数量和质量决定的,我们定义为IB(P)。
链接的重要度,是一个关于URL字符串的函数,仅仅考察字符串本身,比如认为“.com”和“home”的重要度比“.cc”和“map”高,我们定义为IL(P)。
平均链接深度,根据上面所分析的宽度优先的原则计算出全站的平均链接深度,然后认为距离种子站点越近的重要性越高。我们定义为ID(P)。
如果我们定义网页的重要性为I(P),那么,页面的重要度由下面的公式决定:
I(P)=X*IB(P)+Y*IL(P)
其中,X和Y两个参数,用来调整IB(P)和IL(P)所占比例的大小,ID(P)由宽度优先的遍历规则保证,因此不作为重要的指标函数。
如何如何实现最佳优先爬虫呢,最简单的方式可以使用优先级队列来实现TODO表,并且把每个URL的重要性作为队列元素的优先级。这样,每次选出来扩展的URL就是具有最高重要性的网页。