知己知彼,百战不殆。SEO是针对搜索引擎的优化,熟知搜索引擎的工作原理有利于我们更深入的了解SEO;也只有知道了搜索引擎如何工作,才能进一步的扩充和发展SEO技术。
一般地,搜索引擎的工作大概分以下三个步骤:
1.在互联网中发现并收集信息; 
2.对收集到的信息进行组织并建立索引库; 
3.根据用户输入的关键字检索索引库信息并返回结果。
蜘蛛(爬虫)
已经没人知道现在的互联网上到底有多少网页,如果没有搜索引擎,我们很难找到有用的信息。那么搜索引擎是如何掌握到这么多信息的呢?
搜索引擎采用一系列程序对互联网上已经存在的域名进行逐层逐一的爬取(可以理解为浏览),如果人类每天都要浏览这几十亿的网页一定会崩溃,但搜索引擎采用一种运行在超级强大的数据中心上的高度自动化的多线程程序进行这项工作,所以每一个步骤都紧张而有序。由于搜索引擎浏览页面的方式很像蜘蛛在爬网,所以通常大家将搜索引擎浏览各种网页的程序(或功能)称为蜘蛛(或爬虫),而这一浏览过程称为爬取或抓取。
你可以想象这个蜘蛛有多强大,像大象一样大的超级蜘蛛或者像久凌大厦一样大的外太空蜘蛛。其实,它只是一行行程序代码,这些代码可以从搜索引擎已经得到和新发现的域名开始,按照既定原则进行定时的有序的爬取工作。我觉得,真正强大的是编写这一行行代码的工程师或运行这些代码的服务器。
那蜘蛛到底是如何爬网的呢?
首先,它要获得一个域名,这个域名可能以前就存在数据库中,也可能是网站管理员刚刚提交的。为了避免复杂,我们从一个刚刚提交的新域名开始。
为了更快更全面的收录互联网信息,几乎每个搜索引擎都提供网站登录入口,如果你制作一个新网站,可以将域名登录到需要的搜索引擎,这样可以更快的被蜘蛛发现。
我们假设有一个域名为abcd.com的网站,当你向搜索引擎提交网址后,搜索引擎会在其更新周期发生时(蜘蛛很忙,一般提交网址后不会马上就来爬取。什么时候来?三天到七天,甚至更长,看蜘蛛的心情)对abcd.com进行爬取。
蜘蛛来到网站后会从网站首页的标题、关键字、描述开始,按照从上到下,从左到右的顺序一个链接一个链接的爬过(现在你应该知道为什么大多数网站都会把导航放在页面顶部或者左侧了,并不只是美观,还有SEO的考虑),在爬取的过程中,蜘蛛会逐一记录每条链接和链接的文本性描述(标题),并对这些信息加以记录,这个过程很有讲究。
试想,如果蜘蛛是从导航的第一个链接开始爬取并记录,那爬到页面底部最后一个链接就基本可以收工回家了。但频道里的内容呢?那些不会出现在首页的内容呢?
你小看蜘蛛了。
当蜘蛛发现一个网站之后,会按照从上到下、从左到右的顺序,从网站的首页开始对每一个链接逐一爬过并记录。你可能会问,没有出现在首页的文章呢?
别担心,改编高尔基大师的一句话:“蜘蛛对待信息,就像饥饿的人扑在面包上”。搜索引擎为了提供更全面的信息服务,即使没有出现在首页或频道页的文章也会被收录。为此,蜘蛛在爬行的过程中精明强干,它会注意分辨哪些东西到此为止,那些东西值得深入。
广度优先和深度优先
蜘蛛一般采用两种方式对一个网站进行爬取。一种是广度优先、横向的抓取方式,先从较浅层抓取,抓取完同层次的所有页面后再进入下一页;一种是深度优先,和广度优先相反,深度优先是跟踪浅层页面中的某一连接逐步抓取深层页面,直至抓取完最深层的页面后返回浅层页面再跟踪其另一连接,继续向深层页面抓取,这是一种纵向页面抓取方式。
如果是广度优先,蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。下图是广度优先的算法示例:
爬行顺序:
1
2b-e-i 
3c-d-f-j 
4g-k 
5
如果是深度优先,深度优先是指蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路最底端之后再转入下一个起始页,继续跟踪链接。下图是深度优先的算法示例:
爬行顺序:
1a-b-c 
2a-b-d 
3a-e-f-g-h 
4a-i-j-k-h 
也许你会觉得广度优先和深度优先似乎没什么分别,从文字说明和算法示例上看,无论蜘蛛采用哪种策略爬行,都会收录所有页面。
别太乐观。如果你的网站有上万条信息,你能保证蜘蛛不会偷懒吗?事实是,蜘蛛经常偷懒。搜索引擎会根据一定的标准决定什么时间派出蜘蛛进行爬取,每次爬取多长时间,爬取的深度到几级页面(这个标准的决定因素很多,可能是网站的信息量、内容更新频度、搜索引擎友好度、PR等)。
一般认为,爬虫对网站的爬取策略的制定取决于搜索引擎对网站的结构理解;这里的结构既有链接结构又有目录结构(网页存储在服务器硬盘上的目录位置)。针对网站结构的优化一般分为链接优化和目录优化,这类优化的目的是为了取悦蜘蛛,提升蜘蛛光顾网站的频度和时长,增加收录。
收录
蜘蛛对一个网站抓取其实就是在互联网中收集信息的过程,一般,我们称这个过程为收录。我们可以通过搜索引擎的site命令来获得一个网站在搜索引擎的收录量,比如:
google或百度的搜索框里输入
site:www.abcd.com
图中是google对搜狐的收录数据。
往往一个网站的收录数据是其SEO成功与否的重要指标和参考,因为收录是获得良好排名的基础,道理很简单,如果一个姑娘没看到过你,你怎么能指望这个姑娘爱上你(网恋不在此列);同样的,如果一个蜘蛛没有爬过你,你怎么能指望搜索引擎给你一个好的排名。没有收录就不会有排名,收录量的提升是SEO的一项基本工作。
重复一次,SEO是针对搜索引擎的优化。我们刚刚所讲到的蜘蛛和收录是搜索引擎工作原理中的第一步,在互联网中发现并收集信息。针对这一步骤将有很多SEO的知识需要学习和掌握,目的在于提升网站的收录量,即,如何让搜索引擎收录你的所有页面?如何让蜘蛛爬行的更广、更深?如何让蜘蛛频繁光顾你的网站并停留尽量长的时间?这些知识我们将在后面的课程中涉及。
我们知道了搜索引擎如何在互联网中发现并收集信息。下周,我们将继续搜索引擎工作原理后面的部分:对收集到的信息进行组织并建立索引库,根据用户输入的关键字检索索引库并返回结果。看看蜘蛛爬取来的网页是如何被存储和组织,以及搜索引擎如何针对用户给出的关键字在索引库里进行检索。