网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。
: p4 L& C# Y1 F& p# L2 y9 t
4 y8 q, K1 z! h0 O$ n. k1 n+ t0 v; |0 y9 r
在搜索引擎蜘蛛系统中,待爬取URL队列是很关键的部分,需要蜘蛛爬取的网页URL在其中顺序排列,形成一个队列结构,调度程序每次从队列头取出某个URL,发送给网页下载器页面内容,每个新下载的页面包含的URL会追加到待爬取URL队列的末尾,如此形成循环,整个爬虫系统可以说是由这个队列驱动运转的。同样我们的网站每天都要经过这样一个队列,让搜索引擎进行爬取的。- H( f' Y+ w1 H4 G
/ Z, a/ H W) p+ b) E* g/ A: m 那么待爬取URL队列中的页面URL 的排列顺序是如何来确定的呢?上面我们说了将新下载页面中的包含的链接追加到队列尾部,这固然是一种确定队列URL顺序的方法,但并非唯一的手段,事实上,还可以采纳很多其他技术来实现,将队列中待爬取的URL进行排序。那么究竟搜索引擎蜘蛛是按照什么样的策略进行的爬取呢?以下我们来进行更深入的分析吧。2 _- O: u- y2 ^, k" t) I) E
$ q1 N2 O: d; @" J
第一、宽度优化遍历策略# o" m! S, X" q2 j0 [. V
8 h* |+ u; Q/ s6 g/ S
宽度优化遍历是一种非常简单直观且历史很悠久的遍历方法,在搜索引擎爬虫一出现就开始采用了。新提出的抓取策略往往会将这种方法作为比较基准,但应该注意到的是,这种策略也是一种相当强悍的方法,很多新方法实际效果不见昨比宽度优化遍历策略好,所以至今这种方法也是很多实际爬虫系统优先采用的爬取策略。网页爬取顺序基本是按照网页的重要性排序的。之所以如此,有研究人员认为,如果某个网页包含很多入链,那么更有可能被宽度优化遍历策略早早爬到,而入链这个数从侧面体现了网页的重要性,即实际上宽度优化遍历策略隐含了一些网页优化级假设。; g, I9 C7 T8 O g3 r$ q3 {
4 D+ l& J2 a+ O) y; q% p: q0 |0 w 第二、非完全pagerank策略
9 _2 _/ k8 P% w/ b2 m
' M: k2 u5 d4 ~2 I+ Y& t R1 d) j PageRank是一种著名的链接分析算法,可以用来衡量网页的重要性。很自然地,可以想到用PageRank的思想来对URL优化级进行排序。但是这里有个问题,PageRank是个全局性算法,也就是说当所有网页下载完成后,其计算结果才是可靠的,而爬虫的目的就是去下载网页,在运行过程中只能看到一部分页面,所以在爬取阶段的网页是无法获得可靠的PageRank得分的。对于已经下载的网页,加上待爬取的URL队列中的一URL一起,形成网页集合,在此集合内进行PageRank计算,计算完成之后,将待爬取URL队列里的网页按照按照PageRank得分由高低排序,形成的序列就是爬虫接下来应该依次爬取的URL列表。这也是为何称之为“非完全PageRank”的原因,。
7 j1 k9 o! O; U- z
; h- V5 K6 D" L2 @0 I1 G) u 第三、OPIC策略+ `, w! V. X5 w; K4 Y5 P3 {
# C) S; `7 V7 T) C OPIC的字面含义是“在线页面重要性计算”,可以将其看做是一种改进的PageRank算法。在算法开始之前,每个互联网页面都给予相同的现金,每当下载了某个页面P后,P就将自己拥有的现金平均分配给页面中包含的链接页面,氢自己的现金清空。而对于待爬取URL队列中的网页,则根据其手头拥有的现金金额多少排序,优先下载现金最充裕的网页,OPIC从大的框架上与PageRank思路基本一致,区别在于:PageRank每次需要迭代计算,而OPIC策略不需要迭代过程。所以计算速度远远快与PageRank,适合实时 计算使用。同时,PageRank,在计算时,存在向无链接关系网页的远程跳转过程,而OPIC没有这一计算因子。实验结果表明,OPIC是较好的重要性衡量策略,效果略优于宽度优化遍历策略。
# w- }$ H) e0 G c N2 n$ S& T' h& ~/ _1 h3 v8 v& V" J
第四、大站优化策略
) @6 H; ~9 V0 {6 W; L% H+ Z% D
# } |; x; R! R1 S+ U, P 大部优化策略思路很直接:以网站为单位来选题网页重要性,对于待爬取URL队列中的网页根据所属网站归类,如果哪个网站等待下载的页面最多,则优化先下载这些链接,其本质思想倾向于优先下载大型网站。因为大型网站往往包含更多的页面。鉴于大型网站往往是著名企业的内容,其网页质量一般较高,所以这个思路虽然简单,但是有一定依据。实验表明这个算法效果也要略优先于宽度优先遍历策略。
1 @# z. e2 F4 | h9 N! I0 s( Q5 T3 a! }
第五、网页更新策略
& ]4 F# R8 x2 C5 |- \
4 {- m' n2 a& A& G% I 互联网的动态是其显著特征,随时都有新出现的页面,页面的内容被更改或者本来存在的页面删除。对于爬虫来说,并非将网页抓取到本地就算完成任务,也要体现出互联网这种动态性。本地下载的网页可被看做是互联网页的镜像,爬虫要尽可能保证其一致性。可以假设一种情况:某 个网页已被删除或者内容做出重大变动,而搜索引擎对此惘然无知,仍然按其旧有内容排序,将其作为搜索结果提供给用记,其用户体验度之糟糕不言而喻。所以对于已经爬取的网页,爬虫还要负责保持其内容和互联网页面内容的同步,这取决于爬虫所彩用的网页更新策略。网页更新策略的任务是要决定何时重新爬取之前已经下载过和网页,以尽可能使得本地下载网页和互联网原始页面内容保持一致。常用的网页更新策略有三种:历史参考策略,用户体验度策略和聚类抽样策略。
: Y- Z8 ?" d4 }6 J, F7 r
; M+ p; N) Z7 R# a (1)什么是历史参考策略?
! h# \! D; Q, c- X8 j: T
+ A# d- a& @8 ]; | 历史参考策略是最直观的一种更新策略,它建立于如下假设之上:过去频繁更新的网页,那么将来也会频繁更新,所以为了预估某个网页何时进行更新,可以通过参考其历史更新情况来做出决定。
. |) j2 E/ L0 M$ W' s
* @! \- g4 f& w/ h [8 P: k! u8 s 从这一点可以看出,我们网站的更新一定要有规律的进行,这样才能让搜索引擎蜘蛛更好的来关注你的网站,把握你的网站,很多人在更新网站的时候,不知道为什么要做规律性的更新,这就是真正存在的原因。
4 c2 ?: L8 I+ U: a9 ?! X, u3 N2 \7 Y) g8 N7 N: I! L e0 E
(2)什么是用户体验度策略?& d/ f1 _6 r, n ]9 v" n) K
6 {0 A4 C5 e) E8 @4 F4 x9 w
这个很明显,大家都知道。一般来说,搜索引擎用户提交查询结果后,相关的搜索结果可能成千上万,而用户没有耐心去查看排在后面的搜索结果,往往只盾前三页搜索内容,用户体验策略就是利用搜索引擎用户的这个特点来设计更新策略的。( n9 f; Z9 r# u. v& g: ^
# y$ d+ S, O/ E" Q6 V) p
(3)聚类抽样策略) N7 J8 `* W, ^ m* `! r5 O' L
& ^$ u$ Y( q$ [8 x 上面介绍的两种网页更新策略严重依赖网页的历史更新信息,因为这是能够进行后续计算的基础。但在现实中为每个网页保存历史信息,搜索系统会增加 额外的负担。从另外一个角度考虑,如果是首次爬取的网页,因为没有历史信息,所以也就无法按照这两种思路去预估其更新周期,聚类抽样,策略即是为了解决上述缺点而提出的。网页一般具有一些属性,根据这些属性可以预测其更新周期,具有相信属性的网页,其更新周期也是类似的。: i" L9 J( }; s: P% Y0 w
4 e; A3 Z5 r3 u7 n& v9 | 通过以上对搜索引擎蜘蛛的爬取过程以及爬取策略进行了简单的了解之后,你是否应该有些考虑了?试着对自己的网站进行改变了?以上的一些原因说明了搜索引擎的更新是有规律以及有章法进行的,要想更能适应搜索引擎的更新原则和蜘蛛爬取原则,我们就应该从更基础的入手去进行全面的分析和总结。
( e1 k, Q- X; O6 S l1 I/ E
, B0 }* c8 C D |