爬行和抓取
# I! N: [3 Y% } 蜘蛛' a; @6 C2 y' c1 j: ?3 _
搜索引擎用来爬行页面和访问页面的程序叫做“蜘蛛”,大家也成为机器人(robots)。搜索引擎蜘蛛访问网站页面时类似于普通用户使用的浏览器,蜘蛛程序发出页面访问请求后,服务器返回HTML代码,蜘蛛程序把收到的代码存入原始页面数据库中。搜索引擎为了提高爬行和抓取速度,都使用多个蜘蛛一起爬行页面,提高爬行速度。
, ?% p( k& f+ l2 Q) J 蜘蛛访问任何一个网站时,都会先访问网站根目录下的robotstxt文件。如果robotstxt文件禁止搜索引擎抓取某些文件或目录,搜索引擎就不会爬行抓取,直接过滤这些文件。9 m- ~5 L8 s# F9 T- g# p
跟踪链接
. \: C$ T6 @! |8 l) A" _& |7 i+ N( X 为了抓取网上尽量多的页面,搜索引擎蜘蛛会跟踪页面的链接,从一个页面爬行到另外一个页面,一层层的爬行直至没有继续往下的链接为主。
* S1 F' [1 @# Q 搜索引擎爬行的原理有两种:一种是深度优化,另外一种就是广度优先。+ w+ [) l2 }: N
所谓深度优先,指的就是蜘蛛沿着发现的链接一直向前爬行,直到前面再也没有其他链接指向,然后返回到第一个页面,继续爬行。$ H1 Q9 ?8 I" a9 C& v9 [
广度优先是指蜘蛛在一个页面上发现多个链接地址,不是顺着一个链接一直往前,而是把页面上所有第一层的链接都爬行一遍后,在从第二层页面开始爬行直至最后。从理论上说,无论是深度优先还是广度优先,只要给蜘蛛足够长的时间,都能爬完整个互联网。在实际工作中,蜘蛛的带宽资源、时间都是有限的,也不可能爬行完所有的页面。所以深度优先和广度优先通常是混合使用的,这样既可以照顾到尽量多的页面,也能够照顾到一部分内页。2 f* q& [4 ~7 r. n
吸引蜘蛛
( l. J$ Y l6 s5 r 那接下来我们就要思考,该如何吸引蜘蛛爬行,去抓取更多的页面,我认为应该从以下几个方面去考虑:
A* b+ n, z. V5 i% M1 H () 网站和页面的权重:$ @. }, L( h. O; O0 ^
质量高、资格老的网站被认为权重比较高,这种网站的页面被爬行的深度也会比较高,被收录的内页也会增加。
+ E) `/ C7 |: V. Z () 页面更新度:, |0 v$ x: G! a1 u
蜘蛛每次爬行都会把页面数据存储起来,如果第二次爬行发现页面与第一次收录完全一样,说明这个网站页面没有更新,蜘蛛下次过来继续爬行的概率也不会很高。
# g: t6 O: t s1 @ () 导入链接:
( F% n5 [( m/ Z( }( m 导入链接也就是咱们经常说的外链和内链,外链顾名思义是从外部网站导入过来的,比较多的就是友情链接。内链主要是针对网站内部来说,是指从网站的一个页面指向另外一个页面。高质量的外链可以增加网站的权重,也可以增加搜索引擎爬行网站的深度。
$ I9 h4 W" q/ P% j* G2 A7 ^% D ()与首页的点击距离8 O. @ e, G: s) I9 U) p, J- M& G
一般来说网站上权重最高的页面就是首页,大部分外部链接也都是指向首页,蜘蛛访问最频繁的也是首页。所以,离首页距离越近,页面的权重越高,被蜘蛛爬行的几率也会更大。) m, I! |$ R9 T& ]4 G0 S
地址库1 W9 d3 M" p) Z& I
为了避免重复爬行和抓取网址,搜索引擎内部会建立一个地址库,记录已经被发现还没有抓取的页面,以及已经被抓取的页面。
! _# c2 G# w, y 地址库中的URL有几个:
# Q+ }( p5 M- ~3 U8 G; ~' i () 人工录入的种子网站3 K3 ?: n+ ]5 u3 R' _' o. ^
() 蜘蛛爬行抓取页面后,从HTML中解析出新的URL,与地址库中的数据库进行对比,如果是地址库中没有的网址,就会存入待访问的地址库。% F) ^) ]2 ]5 r& Y
() 站长通过搜索引擎网站页面表格提交进来的网址。
5 W5 K% c. M! J/ U. W% B 文件存储: r( k/ s! f7 e$ v3 C. I7 r
搜索引擎蜘蛛抓取的数据存入原始页面数据库,其中的页面数据与用户浏览器得到的HTML是完全一样,每一个URL都有相应的文件编号
& v8 A6 U- ^( \# l, x! m/ n本文来自: 9710.cc|5319.cc|9831.cc|0723.cc|9693.cc |