爬行和抓取7 r- ~5 h9 j+ a
蜘蛛1 ?) w4 ?+ e- x
搜索引擎用来爬行页面和访问页面的程序叫做“蜘蛛”,大家也成为机器人(robots)。搜索引擎蜘蛛访问网站页面时类似于普通用户使用的浏览器,蜘蛛程序发出页面访问请求后,服务器返回HTML代码,蜘蛛程序把收到的代码存入原始页面数据库中。搜索引擎为了提高爬行和抓取速度,都使用多个蜘蛛一起爬行页面,提高爬行速度。
8 Y a v% M" p1 }* X, {' [ 蜘蛛访问任何一个网站时,都会先访问网站根目录下的robotstxt文件。如果robotstxt文件禁止搜索引擎抓取某些文件或目录,搜索引擎就不会爬行抓取,直接过滤这些文件。1 T) Y; E2 Y# w# ?8 U7 d
跟踪链接
0 d4 ^$ R! b8 R6 A5 `, x 为了抓取网上尽量多的页面,搜索引擎蜘蛛会跟踪页面的链接,从一个页面爬行到另外一个页面,一层层的爬行直至没有继续往下的链接为主。0 q I- I8 K- P* m) C1 T! z* x
搜索引擎爬行的原理有两种:一种是深度优化,另外一种就是广度优先。, Y' k8 ~ j+ ?9 c* Q E
所谓深度优先,指的就是蜘蛛沿着发现的链接一直向前爬行,直到前面再也没有其他链接指向,然后返回到第一个页面,继续爬行。0 ^/ K0 C, |4 R' Z
广度优先是指蜘蛛在一个页面上发现多个链接地址,不是顺着一个链接一直往前,而是把页面上所有第一层的链接都爬行一遍后,在从第二层页面开始爬行直至最后。从理论上说,无论是深度优先还是广度优先,只要给蜘蛛足够长的时间,都能爬完整个互联网。在实际工作中,蜘蛛的带宽资源、时间都是有限的,也不可能爬行完所有的页面。所以深度优先和广度优先通常是混合使用的,这样既可以照顾到尽量多的页面,也能够照顾到一部分内页。7 A/ ^3 \8 ~5 ~2 S
吸引蜘蛛5 p; C# @2 A6 M4 g
那接下来我们就要思考,该如何吸引蜘蛛爬行,去抓取更多的页面,我认为应该从以下几个方面去考虑:; W* T9 ]6 }3 Y6 p
() 网站和页面的权重:
, w$ M. k' y Z7 W 质量高、资格老的网站被认为权重比较高,这种网站的页面被爬行的深度也会比较高,被收录的内页也会增加。
: b: {# z- U8 Q# {9 G! q- c () 页面更新度:- u' o) k" @1 @0 }4 u5 c
蜘蛛每次爬行都会把页面数据存储起来,如果第二次爬行发现页面与第一次收录完全一样,说明这个网站页面没有更新,蜘蛛下次过来继续爬行的概率也不会很高。
y5 e8 ]9 F+ q M () 导入链接:
1 P# r7 `: ]; ^9 G- F 导入链接也就是咱们经常说的外链和内链,外链顾名思义是从外部网站导入过来的,比较多的就是友情链接。内链主要是针对网站内部来说,是指从网站的一个页面指向另外一个页面。高质量的外链可以增加网站的权重,也可以增加搜索引擎爬行网站的深度。
" X \% M7 i4 x0 @ ()与首页的点击距离
. w$ p; @3 A8 ?/ G7 l' {& W6 ]6 A7 h* A 一般来说网站上权重最高的页面就是首页,大部分外部链接也都是指向首页,蜘蛛访问最频繁的也是首页。所以,离首页距离越近,页面的权重越高,被蜘蛛爬行的几率也会更大。 F6 r; ?' p; v2 X
地址库
1 w: B, ]% f! ?5 } 为了避免重复爬行和抓取网址,搜索引擎内部会建立一个地址库,记录已经被发现还没有抓取的页面,以及已经被抓取的页面。+ z8 m8 k, r% d7 t3 X ^1 Q
地址库中的URL有几个:" b- V2 V* s1 s( ?, ` \
() 人工录入的种子网站
/ }/ C5 K( t8 _ () 蜘蛛爬行抓取页面后,从HTML中解析出新的URL,与地址库中的数据库进行对比,如果是地址库中没有的网址,就会存入待访问的地址库。
) ^( b$ E: e8 v) z. S () 站长通过搜索引擎网站页面表格提交进来的网址。
$ S/ \9 n6 k" d9 g 文件存储" K+ g3 C1 U; M
搜索引擎蜘蛛抓取的数据存入原始页面数据库,其中的页面数据与用户浏览器得到的HTML是完全一样,每一个URL都有相应的文件编号
% W6 x, j5 q9 m H9 b% E本文来自: 9710.cc|5319.cc|9831.cc|0723.cc|9693.cc |