搜索引擎中的收集器利用HTTP协议对Web进行遍历下载网页,将搜集到的网页文档保存在文档库中。对于搜索引擎来说,从目前公布的数据看,容量最大的搜索引擎也不过搜集了整个互联网网页的40%。
这其中的原因,一方面是搜索引擎的技术限制,还无法到达所有的页面,另一方面,由于数据量太大,从效率的角度考虑,搜索引擎机器人只收集那些认为重要的页面,而网页重要性的主要依据是某个网页的链接深度。
由于不可能搜集所有的网页,有些机器人对一些不太重要的网站,设置了访问的层数。如果机器人设置的访问层数为3的话,属于第4层的网页是不会被访问到的。这也是为什么在做一个网站优化项目时,一直要强调网站结构层次要简单,就是为了便于搜索引擎抓取到更多的页面,如果页面连收录都有困难,获得好的排名更是没有可能。
由于有些Web网页本身并不在Web服务器上,而是由服务器根据用户提交的HTML表单动态生成,动态网页一直是机器人面临的问题。由于开发语言不断增多,动态网页的类型也不断增多,如ASP、JSP、PHP等。这些类型的网页对机器人来说,可能还稍微容易些,机器人比较难于处理的是一些脚本语言,如VBScript和Javascript生成的网页,如果要完善处理好这些网页,机器人需要有自己的脚本解释程序。由于许多数据是放在数据库的网站,需要通过该网站的数据库搜索才能获得信息,这给机器人的搜索带来很大的困难。对于这类网站,网址静态化是搜索引擎优化工作中需要考虑的问题。
机器人需要收集网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。每个机器人都有自己的名字,在搜集网页的时候,都会向网站标明自己的身份。机器人在收集网页的时候会发送一个请求,这个请求中就有一个字段为User_agent,用于标识此机器人的身份。例如Google的机器人标识为GoogleBot,百度的机器人标识为BaiDuSpider,雅虎的机器人标识为Inktomi Slurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的机器人来过,什么时候来过,以及读了多少数据等。
此外,由于网站的内容经常在变化,对于已经建立的网页文档数据库也有一个需要不断更新的问题。这就需要机器人按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
搜索引擎的更新周期对搜索引擎的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到,周期过短,技术实现会有一定难度。搜索引擎并不是对所有的网站都采用同样的频率进行更新,对于一些重要的更新量大的网站,更新的周期短,比如新闻类站点,几个小时就会更新一次。对于一些不太重要的网站,比如大量的企业站点,本身就很长时间不更新内容,搜索引擎对这类站点更新周期就比较长,可能一两个月才更新一次。所有,为了让搜索引擎更频繁的造访自己的网站,加强网站更新是非常重要的。