惊现索引擎如何索引收录网页的方法

highdiy 发表在 五月 9, 2007 
对SEO(搜索引擎优化)而言,让网站内的页面能够及时、全面地被搜索引擎索引、收录应该说是首要的任务,这是实施其他SEO策略的最基本保证。——不过,这也是往往易被高估的一个环节,比如说我们时常可以看到某些人宣称自己的网站被Google收录了多少页面如几K甚至几十K等以证明SEO工作的成功。但客观地说,网页仅仅被搜索引擎索引、收录是没有太大的实际意义,往往只能沦为浩如烟海的Internet世界中的殉葬品,更重要的是如何让网页出现在针对特定搜索项的SERP(搜索结果页面)前几页。——许多人相信,让网站内尽可能多的页面被收录进搜索引擎索引数据库终归不是一件坏事,网页越多,暴光的机会也便越大,虽然最终效果如何存在疑问。
Anyway,如果在对网站实施SEO时将重点放在网页被索引、收录的速度与效率,当然也无可厚非,而要想实现这一点,需要我们对搜索引擎如何收录、索引网页的机制有所了解。下面我们以Google为例,介绍搜索引擎收录、索引网页的过程,希望能对朋友们有后助益。——对其他搜索引擎如Yahoo!、Live搜索及百度而言,尽管可能在具体细节上存在差别,不过,基本策略应该是类似的。
1、收集待索引网页的url
Internet上存在的网页数量绝对是个天文数字,每天新增的网页也不计其数,搜索引擎需要首先找到要索引收录的对象。
具体到Google而言,虽然对GoogleBot是否存在DeepBot与FreshBot的区别存在争议——至于是否叫这么两个名字更是众说纷耘,当然,名字本身并不重要——至少到目前为止,主流的看法是,在Google的robots中,的确存在着相当部分专门为真正的索引收录页页准备“素材”的robots——在这里我们姑且仍称之为FreshBot吧——它们的任务便是每天不停地扫描Internet,以发现并维护一个庞大的url列表供DeepBot使用,换言之,当其访问、读取其一个网页时,目的并不在于索引这个网页,而是找出这个网页中的所有链接。——当然,这样似乎在效率上存在矛盾,有点不太可信。不过,我们可以简单地通过以下方式判断:FreshBot在扫描网页时不具备“排它性”,也即是说,位于Google不同的数据中心的多个robots可能在某个很短的时间周期,比如说一天甚至一小时,访问同一个页面,而DeepBot在索引、缓存页面时则不会出现类似的情况,即Google会限制由某个数据中心的robots来完成这项工作的,而不会出现两个数据中心同时索引网页同一个版本的情况,如果这种说法没有破绽的话,则似乎可以从服务器访问日志中时常可以看到源自不同IP的GoogleBot在很短的时间内多次访问同一个网页证明FreshBot的存在。因此,有时候发现GoogleBot频繁访问网站也不要高兴得太早,也许其根本不是在索引网页而只是在扫描url。 
FreshBot记录的信息包括网页的url、Time Stamp(网页创建或更新的时间戳),以及网页的Head信息(注:这一点存在争议,也有不少人相信FreshBot不会去读取目标网页信息的,而是将这部分工作交由DeepBot完成。不过,笔者倾向于前一种说法,因为在FreshBot向DeepBot提交的url列表中,会将网站设置禁止索引、收录的页面排除在外,以提高效率,而网站进行此类设置时除使用robots.txt外还有相当部分是通过mata标签中的“noindex”实现的,不读取目标网页的head似乎是无法实现这一点的),如果网页不可访问,比如说网络中断或服务器故障,FreshBot则会记下该url并择机重试,但在该url可访问之前,不会将其加入向DeepBot提交的url列表。
总的来说,FreshBot对服务器带宽、资源的占用还是比较小的。最后,FreshBot对记录信息按不同的优先级进行分类,向DeepBot提交,根据优先级不同,主要有以下几种:
A:新建网页;
B:旧网页/新的Time Stamp,即存在更新的网页;
C:使用301/302重定向的网页;
D:复杂的动态url,如使用多个参数的动态url,Google可能需要附加的工作才能正确分析其内容。——随着Google对动态网页支持能力的提高,这一分类可能已经取消;
E:其他类型的文件,如指向PDF、DOC文件的链接,对这些文件的索引,也可能需要附加的工作;
F:旧网页/旧的Time Stamp,即未更新的网页,注意,这里的时间戳不是以Google搜索结果中显示的日期为准,而是与Google索引数据库中的日期比对;
G:错误的url,即访问时返回404回应的页面; 
优先级按由A至G的顺序排列,依次降低。需要强调的是,这里所言之优先级是相对的,比如说同样是新建网页,根据指向其的链接质量、数量的不同,优先级也有着很大的区别,具有源自相关的权威网站链接的网页具有较高的优先级。此外,这里所指的优先级仅针对同一网站内部的页面,事实上,不同网站也有有着不同的优先级,换言之,对权威网站中的网页而言,即使其最低优先级的404 url,也可能比许多其他网站优先级最高的新建网页更具优势。
2、网页的索引与收录
接下来才进入真正的索引与收录网页过程。从上面的介绍可以看出,FreshBot提交的url列表是相当庞大的,根据语言、网站位置等不同,对特定网站的索引工作将分配至不同的数据中心完成。整个索引过程,由于庞大的数据量,可能需要几周甚至更长时间才能完成。
正如上文所言,DeepBot会首先索引优先级较高的网站/网页,优先级越高,出现在Google索引数据库及至最终出现在Google搜索结果页面中的速度便越快。对新建网页而言,只要进入到这个阶段,即使整个索引过程没有完成,相应的网页便已具备出现在Google索引库中的可能,相信许多朋友在Google中使用“site:somedomain.com”搜索时常常看到标注为补充结果只显示网页url或只显示网页标题与url但没有描述的页面,此即是处于这一阶段网页的正常结果。当Google真正读取、分析、缓存了这个页面后,其便会从补充结果中逃出而显示正常的信息。——当然,前提是该网页具有足够的链接,特别是来自权威网站的链接,并且,索引库中没有与该网页内容相同或近似的记录(Duplicate Content过滤)。
对动态url而言,虽然如今Google宣称在对其处理方面已不存在障碍,不过,可以观察到的事实仍然显示动态url出现在补充结果中的几率远大于使用静态url的网页,往往需要更多、更有价值的链接才能从补充结果中逸出。
而对于上文中之“F”类,即未更新的网页,DeepBot会将其时间戳与Google索引数据库中的日期比对,确认尽管可能搜索结果中相应页面信息未来得及更新但只要索引了最新版本即可——考虑网页多次更新、修改的情况——;至于“G”类即404 url,则会查找索引库中是否存在相应的记录,如果有,将其删除。
3、数据中心间的同步
前文我们提到过,DeepBot索引某个网页时会由特定的数据中心完成,而不会出现多个数据中心同时读取该网页,分别获得网页最近版本的情况,这样,在索引过程完成后,便需要一个数据同步过程,将网页的最新版本在多个数据中心得到更新。
这就是之前著名的Google Dance。不过,在BigDaddy更新后,数据中心间的同步不再象那样集中在特定的时间段,而是以一种连续的、时效性更强的方式进行。尽管不同数据中心间仍存在一定的差异,但差异已经不大,而且,维持的时间也很短。
提高搜索引擎索引收录网页的效率,根据上面的介绍,可以看出,要想让您的网页尽可能快、尽可能多地被搜索引擎收录,至少应从如下几方面进行优化:
提高网站反相链接的数量与质量,源自权威网站的链接可以让您的网站/网页在第一时间内被搜索引擎“看到”。当然,这也是老生常谈了。从上面的介绍可以看出,要提高网页被搜索引擎收录的效率,首先要让搜索引擎找到您的网页,链接是搜索引擎找到网页的唯一途径——“唯一”一词存在些许争议,见下面的SiteMaps部分——从这个角度看,向搜索引擎提交网站之类的作法没有必要且没有意义,相对而言,要想让您的网站被收录,获得外部网站的链接才是根本,同时,高质量的链接也是让网页步出补充结果的关键因素。 
网页设计要秉持“搜索引擎友好”的原则,从搜索引擎spider的视角设计与优化网页,确保网站的内部链接对搜索引擎“可见”,相对于获得外部网站链接的难度,合理规划的内部链接是提高搜索引擎索引与收录效率更经济、有效的途径——除非网站根本未被搜索引擎收录。
如果您的网站使用动态url,或者导航菜单使用JavaScript,那么,当在网页收录方面遇到障碍时,应首先从这里着手。 
使用SiteMaps。事实上,许多人认为Google取消了FreshBot的一个主要原因便是SiteMaps(xml)协议的广泛应用,认为这样只需读取网站提供的SiteMaps便可得到网页更新信息,而不需FreshBot耗时费力地扫描。这种说法还是有一定道理的,虽然目前不能确定Google究竟直接使用SiteMaps作为DeepBot的索引列表还是用做FreshBot的扫描路标,但SiteMaps能够提高网站索引收录的效率则是不争的事实。比如说,SEO探索曾做过如下的测试: 
两个网页,获得的链接情况相同,一个加入SiteMaps而另一未加入,出现在SiteMaps中的网页很快被收录,而另一个页面则在过了很长时间后才被收录; 
某个孤岛页面,没有任何指向其的链接,但将其加入SiteMaps一段时间后,同样被Google索引,只不过,出现在补充结果中。 
当然,从尽管网页未出现在SiteMaps中但仍能被Google索引也可以看出,Google仍然使用FreshBot或类似FreshBot的机制,当然这也容易理解,毕竟仍然有那么多未使用SiteMaps的网站,Google不可能将其拒之门外。
有关SiteMaps的详细介绍,请参考Google SiteMaps:Google的“后门”。需要指出的是,如今Sitemaps协议已成为行业标准,不独对Google有效,其他主流搜索引擎包括Yahoo!、Live搜索及Ask均已提供支持。 
声明:本文中的信息部分来自公开文献,部分纯属个人揣测,可能有谬误之处,请您姑妄听之。
作者: 
highdiy
原载: 点石互动
搜索引擎优化
博客
版权声明:本文已经获得作者授权发布,转载请保留本版权信息,严禁一切非法复制。

(0)

相关推荐

  • 惊现索引擎如何索引收录网页的方法

    highdiy 发表在 五月 9, 2007  对SEO(搜索引擎优化)而言,让网站内的页面能够及时.全面地被搜索引擎索引.收录应该说是首要的任务,这是实施其他SEO策略的最基本保证.--不过,这也是往往易被高估的一个环节,比如说我们时常可以看到某些人宣称自己的网站被Google收录了多少页面如几K甚至几十K等以证明SEO工作的成功.但客观地说,网页仅仅被搜索引擎索引.收录是没有太大的实际意义,往往只能沦为浩如烟海的Internet世界中的殉葬品,更重要的是如何让网页出现在针对特定搜索项的SER

  • MySql 存储引擎和索引相关知识总结

    存储引擎 什么是数据库存储引擎? 数据库引擎是数据库底层软件组件,不同的存储引擎提供不同的存储机制,索引技巧,锁定水平等功能,使用不同的数据库引擎,可以获得特定的功能 如何查看引擎? --如何查看数据库支持的引擎 show engines; ​ --查看当前数据的引擎: show create table 表名\G ​ --查看当前库所有表的引擎: show table status\G 建表时指定引擎 create table yingqin (id int,name varchar(20))

  • Mysql Innodb存储引擎之索引与算法

    目录 一.概述 二.数据结构与算法 1.二分查找 2.二叉查找树和平衡二叉树 1)二叉查找树 2)平衡二叉树 三.B+树 1.B+树完整定义 2.关于 M 和 L的选定案例 四.B+树索引 1.聚集索引 2.辅助索引 五.关于 Cardinality 值 1.Cardinality定义 2.Cardinality的更新 六.B+树索引的使用 1.联合索引 2.覆盖索引 3.优化器选择不使用索引的情况 4.索引提示 5.Multi-Range Read 优化 (MRR) 6.Index Condi

  • MySql中的存储引擎和索引

    目录 一.MySql的逻辑结构 二.什么是存储引擎 MySQL支持的存储引擎 三.操作 四.数据库的索引 索引的分类 五.索引操作 一.MySql的逻辑结构 MySQL体系结构分为四层:分别是连接层.服务层.存储引擎层.系统文件层. 连接层又称为客户端连接器(Client Connectors):提供与MySQL服务器建立的支持.连接池:管理.缓冲用户的连接,线程处理等需要缓存的需求. 服务层是MySQL Server的核心:主要包含系统管理和控制工具.SQL接口.解析器.查询优化器.缓存. 存

  • PHP模板引擎Smarty中变量的使用方法示例

    本文实例讲述了PHP模板引擎Smarty中变量的使用方法.分享给大家供大家参考,具体如下: 一.概述: Smarty 是 PHP 众多模板引擎中的一个,它是根据 PHP 编写的一个类库. Smarty 的优点: 1.优化网站访问速度: 2.网页前端设计和程序的分离: 二.Smarty 的安装 1.需要到 Smarty 的官方网站 http://www.smarty.net/download.php 下载最新的 Smarty 版本,比如下载的版本为:Smarty-2.6.18.tar.tar: 2

  • python通过索引遍历列表的方法

    本文实例讲述了python通过索引遍历列表的方法.分享给大家供大家参考.具体如下: python中我们可以通过for循环来遍历列表: colours = ["red","green","blue"] for colour in colours: print colour 如果希望遍历列表的同时得到元素的索引号,可以使用下面的代码: colours = ["red","green","blue&qu

  • PHP简单获取网站百度搜索和搜狗搜索收录量的方法

    本文实例讲述了PHP简单获取网站百度搜索和搜狗搜索收录量的方法.分享给大家供大家参考,具体如下: 获取网站百度搜索和搜狗搜索的收录量代码,可以用于获取网站域名在搜索引擎的收录数量,一直想找这个API但没找到,就在网上找了个例子,学习修改了下,可以正常获取百度搜索和搜狗搜索的收录量了:原理是获取搜索引擎site:domain的结果数量,然后再抓取这个数量显示出来. function baidu($url){ $baidu="http://www.baidu.com/s?wd=site:"

  • 如何在scrapy中集成selenium爬取网页的方法

    1.背景 我们在爬取网页时一般会使用到三个爬虫库:requests,scrapy,selenium.requests一般用于小型爬虫,scrapy用于构建大的爬虫项目,而selenium主要用来应付负责的页面(复杂js渲染的页面,请求非常难构造,或者构造方式经常变化). 在我们面对大型爬虫项目时,肯定会优选scrapy框架来开发,但是在解析复杂JS渲染的页面时,又很麻烦. 尽管使用selenium浏览器渲染来抓取这样的页面很方便,这种方式下,我们不需要关心页面后台发生了怎样的请求,也不需要分析整

  • Go语言通过http抓取网页的方法

    本文实例讲述了Go语言通过http抓取网页的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "fmt"  "log"  "net/http"  "net/url"  "io/ioutil" ) //指定代理ip func getTransportFieldURL(proxy_addr *string) (transport *http.Tr

  • javascript使用for循环批量注册的事件不能正确获取索引值的解决方法

    本文实例讲述了javascript使用for循环批量注册的事件不能正确获取索引值的解决方法.分享给大家供大家参考.具体分析如下: 可能不少朋友会遇到一个问题,那就是当使用for循环批量注册事件处理函数,然后最后通过事件处理函数获取当前元素的索引值的时候会失败,先看一段代码实例: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name=&q

随机推荐