2.3 搜索引擎的工作原理
SEO人员需要了解搜索引擎的工作原理,知道它是如何工作的,才能够更好地对网站进行优化。搜索引擎的基本工作原理包括如下四个过程:抓取建库,检索排序,外部投票,结果展现。图2-2所示为搜索引擎工作原理流程图。百度官方也发布了《搜索引擎工作原理》,百度从官方的角度发出了一些声音,纠正了一些互联网上对搜索引擎的误读。
搜索引擎蜘蛛的工作原理
图2-2
2.3.1 抓取建库
互联网信息爆发式增长,如何有效地获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫作“spider”。例如,我们常用的搜索引擎蜘蛛是Baiduspider、Googlebot、Sogou Web Spider等。
spider抓取系统是搜索引擎数据来源的重要保证,如果把Web理解为一个有向图,那么spider的工作过程可以认为是对这个有向图的遍历。从一些重要的种子URL开始,通过页面上的超链接关系,不断发现新URL并抓取,尽最大可能抓取到更多有价值的网页。对于类似百度这样的大型spider系统,因为每时每刻都存在网页被修改、删除或出现新的超链接的可能,因此,还要对spider过去抓取过的页面保持更新,维护一个URL库和页面库。
图2-3所示为spider抓取系统的基本框架图,其中包括链接存储系统、链接选取系统、DNS解析服务系统、抓取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。Baiduspider通过这种系统的通力合作,完成对互联网页面的抓取工作。
图2-3
1.抓取策略类型
图2-3看似简单,其实Baiduspider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值的资源,并保持系统及实际环境中页面的一致性,同时不给网站体验造成压力,须设计多种复杂的抓取策略。下面作一简单介绍:
(1)抓取友好性
互联网资源庞大的数量级,要求抓取系统尽可能地高效利用带宽,在有限的硬件和带宽资源下尽可能多地抓取到有价值的资源。这就造成另一个问题:耗费被抓网站的带宽造成访问压力,如果程度过大,将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户访问,又能尽量多地抓取到有价值资源的目的。
通常,最基本的是基于IP的压力控制。因为如果基于域名,可能存在一个域名对多个IP(很多大网站)或多个域名对应同一个IP(小网站共享IP)的问题。实际中,往往根据IP及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长可以人工调配对自己网站的抓取压力,这时百度spider将优先按照站长的要求进行抓取压力控制。
对同一站点的抓取速度控制一般分为两类:其一,一段时间内的抓取频率;其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也不同。例如,夜晚抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断调整。对于不同站点,也需要不同的抓取速度。
(2)常用抓取返回码示意
下面简单介绍几种百度支持的返回码。
①最常见的404代表“NOT FOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果spider再次发现这条URL,也不会抓取。
②503代表“Service Unavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回503状态码,百度spider不会把这条URL直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回503,那么这条URL仍会被认为是失效链接,从库中删除。
③403代表“Forbidden”,认为网页目前禁止访问。如果是新URL,spider暂时不抓取,短期内同样会反复访问几次;如果是已收录URL,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条URL也会被认为是失效链接,从库中删除。
④301代表“Moved Permanently”,认为网页重定向至新URL。当遇到站点迁移、域名更换、站点改版的情况时,推荐使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。
(3)多种URL重定向的识别
互联网中的一部分网页因为各种各样的原因存在URL重定向状态,为了对这部分资源正常抓取,要求spider对URL重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http 30x重定向、meta refresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上也可以认为是一种间接的重定向。
(4)抓取优先级调配
由于互联网资源规模巨大以及变化迅速,对于搜索引擎来说,全部抓取到并合理地更新,保持一致性几乎是不可能的事情,因此要求抓取系统设计一套合理的抓取优先级调配策略,主要包括深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等。每个策略各有优劣,在实际情况中往往是多种策略结合使用,以达到最优的抓取效果。
(5)重复URL的过滤
spider在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取,再进行抓取网页的行为,并放在已抓取网址集合中。判断是否已经抓取其中涉及最核心的是快速查找并对比,同时涉及URL归一化识别。例如,一个URL中包含大量无效参数,而实际是同一个页面,这将视为同一个URL来对待。
(6)暗网数据的获取
互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据存在于网络数据库中,spider难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等问题,也会造成搜索引擎无法抓取。目前,对于暗网数据的获取,主要思路仍然是通过开放平台采用数据提交的方式来解决,如“百度站长平台”“百度开放平台”等。
(7)抓取反作弊
spider在抓取过程中往往会遇到所谓抓取黑洞,或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如,分析URL特征、分析页面大小及内容、分析站点规模对应抓取规模等。
2.网络协议
刚才提到百度搜索引擎会涉及复杂的抓取策略。其实,搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的内容推广出去,获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。
下面简单列举一些常用的协议:
http协议:超文本传输协议,是互联网上应用最广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端指网站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务器类型、网页最近更新时间等内容。
https协议:实际是加密版http,一种更加安全的数据传输协议。
UA属性:UA即用户代理(User Agent),是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁、来干吗,进而服务器端可以根据不同的身份做出不同的反馈结果。
robots协议:robots.txt是搜索引擎访问一个网站时要访问的第一个文件,用以确定哪些是被允许抓取的、哪些是被禁止抓取的。robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考http://www.robotstxt.org。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robots的meta标签,index、follow、nofollow等指令(将在本书第6.4节详细介绍Robots)。
3.抓取频次原则
Baiduspider根据上述网站设置的协议对站点页面进行抓取,但是不可能做到对所有站点一视同仁,会综合考虑站点实际情况确定一个抓取配额,每天定量抓取站点内容,即我们常说的抓取频次。那么,百度搜索引擎是根据什么指标来确定对一个网站的抓取频次的呢,主要指标有以下4个:
(1)网站更新频率。更新快多来,更新慢少来,直接影响Baiduspider的来访频率。
(2)网站更新质量。更新频率提高了,仅仅是吸引了Baiduspider的注意。Baiduspider对质量是有严格要求的,如果网站每天更新出的大量内容都被Baiduspider判定为低质页面,依然没有意义。
(3)连通度。网站应该安全稳定、对Baiduspider保持畅通,经常给Baiduspider吃闭门羹可不是好事情。
(4)站点评价。百度搜索引擎对每个站点都会有一个评价,且这个评价会根据站点的情况不断变化,是百度搜索引擎对站点的一个基础打分(绝非外界所说的百度权重),是百度内部一个非常机密的数据。站点评级从不独立使用,会配合其他因子和阈值一起共同影响网站的抓取和排序。
抓取频次间接决定着网站有多少页面有可能被建库收录,如此重要的数值如果不符合站长预期,该如何调整呢?百度站长平台提供了抓取频次工具(http://zhanzhang.baidu.com/pressure/index),并已完成多次升级。该工具除了提供抓取统计数据外,还提供“频次调整”功能,站长根据实际情况向百度站长平台提出希望Baiduspider增加来访或减少来访的请求,工具会根据站长的意愿和实际情况进行调整。
4.抓取异常的原因
有一些网页,内容优质,用户也可以正常访问,但是Baiduspider却无法正常访问并抓取,造成搜索结果覆盖率缺失,对百度搜索引擎、对站点都是一种损失,百度把这种情况叫“抓取异常”。对于大量内容无法正常抓取的网站,百度搜索引擎会认为网站存在用户体验上的缺陷,并降低对网站的评价,在抓取、索引、排序上都会受到一定程度的负面影响,最终影响到网站从百度获取的流量。
下面介绍一些常见的抓取异常的原因。
(1)服务器连接异常。服务器连接异常会有两种情况。一种是站点不稳定,Baiduspider尝试连接网站的服务器时出现暂时无法连接的情况;另一种是Baiduspider一直无法连接上网站的服务器。
造成服务器连接异常的原因通常是网站服务器过大,超负荷运转。也有可能是网站运行不正常,请检查网站的Web服务器(如apache、iis)是否安装且正常运行,并使用浏览器检查主要页面能否正常访问。网站和主机还可能阻止了Baiduspider的访问,需要检查网站和主机的防火墙。
(2)网络运营商异常。网络运营商分电信和联通两种,Baiduspider通过电信或网通无法访问网站。如果出现这种情况,需要与网络服务运营商进行联系,或者购买拥有双线服务的空间或者购买cdn服务。
(3)DNS异常。当Baiduspider无法解析网站的IP时,会出现DNS异常。可能是网站IP地址错误,或者域名服务商把Baiduspider封禁。请使用WHOIS或者host查询自己网站的IP地址是否正确且可解析,如果不正确或无法解析,请与域名注册商联系,更新IP地址。
(4)IP封禁。限制网络的出口IP地址,禁止该IP段的使用者进行内容访问,这里特指封禁了Baiduspider IP。当网站不希望Baiduspider访问时,才需要该设置,如果希望Baiduspider访问网站,请检查相关设置中是否误添了Baiduspider IP。也有可能是网站所在的空间服务商把百度IP进行了封禁,这时需要联系服务商更改设置。
(5)UA封禁。服务器通过UA识别访问者的身份。当网站针对指定UA的访问,返回异常页面(如403,500)或跳转到其他页面的情况,即为UA封禁。当网站不希望Baiduspider访问时,才需要该设置,如果您希望Baiduspider访问您的网站,useragent相关的设置中是否有Baiduspider UA,并及时修改。
(6)死链。页面已经无效,无法对用户提供任何有价值信息的页面就是死链接,包括协议死链和内容死链两种形式。
协议死链。页面的tcp状态、http状态明确表示的死链,常见的如404、403、503状态等。
内容死链。服务器返回状态是正常的,但内容已经变更为不存在、已删除或需要权限等与原内容无关的信息页面。
对于死链,建议站点使用协议死链,并通过百度站长平台——死链工具向百度提交,以便百度更快地发现死链,减少死链对用户以及搜索引擎造成的负面影响。
(7)异常跳转。将网络请求重新指向其他位置即为跳转。异常跳转指的是以下几种情况:
①当前该页面为无效页面(如内容已删除、死链等),直接跳转到前一目录或者首页,百度建议站长将该无效页面的入口超链接删除。
②跳转到出错或者无效页面。
注意:对于长时间跳转到其他域名的情况,如网站更换域名,百度建议使用301跳转协议进行设置。
(8)其他异常。
①针对百度refer的异常:网页针对来自百度的refer返回不同于正常内容的行为。
②针对百度ua的异常:网页对百度UA返回不同于页面原内容的行为。
③JS跳转异常:网页加载了百度无法识别的JS跳转代码,使得用户通过搜索结果进入页面后发生了跳转的情况。
④压力过大引起的偶然封禁:百度会根据站点的规模、访问量等信息,自动设定一个合理的抓取压力。但是在异常情况下,如压力控制失常时,服务器会根据自身负荷进行保护性的偶然封禁。这种情况下,请在返回码中返回503(其含义是“Service Unavailable”),这样Baiduspider会过段时间再来尝试抓取这个链接,如果网站已空闲,则会被成功抓取。
5.新链接重要程度判断
上面介绍了影响Baiduspider正常抓取的原因,下面介绍Baiduspider的一些判断原则。在建库环节前,Baiduspider会对页面进行初步内容分析和链接分析,通过内容分析决定该网页是否需要建索引库,通过链接分析发现更多网页,再对更多网页进行抓取——分析——是否建库&发现新链接的流程。理论上,Baiduspider会将新页面上所有能“看到”的链接都抓取回来。那么,面对众多新链接,Baiduspider根据以下两个方面判断哪个更重要。
(1)对用户的价值
①内容独特,百度搜索引擎喜欢unique的内容。
②主体突出,切不要出现网页主体内容不突出而被搜索引擎误判为空短页面不抓取的情况。
③内容丰富。
④广告适当。
(2)链接的重要程度
①目录层级——浅层优先。
②链接在站内的受欢迎程度。
6.优先建重要库原则
Baiduspider抓了多少页面并不是最重要的,重要的是有多少页面被建索引库,即我们常说的“建库”。众所周知,搜索引擎的索引库是分层级的,优质的网页会被分配到重要索引库,普通网页会待在普通库,再差一些的网页会被分配到低级库去当补充材料。目前,60%的检索需求只调用重要索引库即可满足,这也解释了为什么有些网站的收录量超高,流量却一直不理想。
那么,哪些网页可以进入优质索引库呢?其实,总的原则就是一个:对用户的价值,包括却不仅限于以下4方面:
(1)有时效性且有价值的页面。时效性和价值是并列关系,缺一不可。有些站点为了产生时效性,内容页面做了大量采集工作,产生了一堆无价值的页面,也是百度不愿看到的。
(2)内容优质的专题页面。专题页面的内容不一定完全是原创的,即可以很好地把各方内容整合在一起,或者增加一些新鲜的内容,如观点和评论,给用户更丰富全面的内容。
(3)高价值原创内容页面。百度把原创定义为花费一定成本、大量经验积累提取后形成的文章。千万不要再问我们伪原创是不是原创。
(4)重要个人页面。这里仅举一个例子,科比在新浪微博开户了,即使他不经常更新,但对于百度来说,它仍然是一个极重要的页面。
7.哪些网页无法进入索引库
上述优质网页进了索引库,其实互联网上大部分网站根本没有被百度收录。并非百度没有发现它们,而是在建库前的筛选环节被过滤掉了。那么,怎样的网页在最初环节就被过滤掉了?
(1)重复内容的网页。互联网上已有的内容,百度没必要再收录。
(2)主体内容空短的网页。
①有些内容使用了百度spider无法解析的技术,如JS、AJAX等,虽然用户访问能看到丰富的内容,依然会被搜索引擎抛弃。
②加载速度过慢的网页,也有可能被当作空短页面处理。注意:广告加载时间算在网页整体加载时间内。
③很多主体不突出的网页即使被抓取回来,也会在这个环节被抛弃。
(3)部分作弊网页。
2.3.2 检索排序
用户输入关键词进行检索,百度搜索引擎在排序环节要做两方面的事情:第一,把相关的网页从索引库中提取出来;第二,把提取出来的网页按照不同维度的得分进行综合排序。“不同维度”包括:
(1)相关性。网页内容与用户检索需求的匹配程度,如网页包含的用户检查关键词的个数,以及这些关键词出现的位置;外部网页指向该页面所用的锚文本等。
(2)权威性。用户喜欢有一定权威性网站提供的内容,相应地,百度搜索引擎也更相信优质权威站点提供的内容。
(3)时效性。时效性结果指的是新出现的网页,且网页内承载了新鲜的内容。目前,时效性结果在搜索引擎中日趋重要。
(4)重要性。网页内容与用户检查需求匹配的重要程度或受欢迎程度。
(5)丰富度。丰富度看似简单,却是一个覆盖范围非常广的命题,可以理解为网页内容丰富,可以完全满足用户需求;也可以理解为不仅可以满足用户单一需求,还可以满足用户的延展需求。
(6)受欢迎程度。指该网页是不是受欢迎。
以上便是百度搜索引擎决定搜索结果排序时考虑的六大原则。那么,六大原则的侧重点是怎样的呢?哪个原则在实际应用时占比最大呢?其实,在这里没有一个确切的答案。在百度搜索引擎早期,这些阈值的确是相对固定的,如“相关性”在整体排序中的重量可以占到七成。但随着互联网的不断发展,检索技术的进步,网页数量的爆发式增长,相关性已经不是难题。于是,百度搜索引擎引入了机器学习机制,让程序自动产出计算公式,推进排序策略更加合理。
2.3.3 外部投票
“内容为王超链为皇”的说法流行了很多年,通过超链计算得分来体现网页的相关性和重要性,的确曾经是搜索引擎用来评估网页的重要参考因素之一,会直接参与搜索结果排序计算。但随着该技术被越来越多的SEO人员了解,无论是谷歌还是百度,对超链数据的依赖程度都越来越低。那么,现在超链发挥着怎样的作用?
(1)吸引蜘蛛抓取。虽然百度在挖掘新好站点方面下了很大工夫,开放了多个数据提交入口,开辟了社会化发现渠道,但超链依然是发现收录链接的最重要入口。
(2)向搜索引擎传递相关性信息。百度除了通过TITLE、页面关键词、H标签等对网页内容进行判断外,还会通过锚文本进行铺助判断。使用图片作为点击入口的超链,也可以通过alt属性和title标签向百度传情达意。
(3)提升排名。百度搜索引擎虽然降低了对超链的依赖,但对超链的识别力度从未下降,制定出更加严格的优质链接、正常链接、垃圾链接和作弊链接标准。对于作弊链接,除了对链接进行过滤清理外,也对链接的受益站进行一定程度的惩罚。相应地,对优质链接,百度依然持欢迎的态度。
(4)内容分享,获取口碑。优质内容被广泛传播,网站借此获得的流量可能并不多,但如果内容做得足够,也可以树立自己的品牌效应。
注意:本书第8章会详细讲解如何开展外部链接建设。
2.3.4 结果展现
网页经历了抓取建库,参与了排序计算,最终展现在搜索引擎用户面前。目前,百度搜索左侧结果展现形式很多,如凤巢、品牌专区、自然结果等,一条自然结果怎样才能获得更多的点击,是站长考虑的重要环节。
目前,自然结果里又分两类,第一类即结构化展现,形式多样,目前覆盖80%的搜索需求,即80%的关键词下会出现这种复杂展现样式,如图2-4所示,QQ下载包含下载地址、大小、更新时间等数据;第二类即一段摘要式展现,最原始的展现方式,只有一个标题、两行摘要、部分链接、配图,如图2-5所示,一般企业网站、资讯类网站均为此展现方式。
图2-4
图2-5