网页抓取
当大多数人谈论互联网搜索引擎时,他们实际上指的是万维网搜索引擎。在万维网成为互联网最显眼的部分之前,就已经有搜索引擎来帮助人们在网络上查找信息了。像“gopher”和“Archie”这样的程序维护着连接到互联网的服务器上存储文件的索引,并大大减少了查找程序和文档所需的时间。在20世纪80年代末,要从互联网获得真正的价值,意味着要知道如何使用gopher、Archie、Veronica以及其他工具。
如今,大多数互联网用户将他们的搜索限制在网络上,因此本文将仅限于专注于网页内容的搜索引擎。
广告
在搜索引擎告诉你文件或文档在哪里之前,它必须先找到这些文件或文档。为了在数亿个现有网页中查找信息,搜索引擎会使用特殊的软件机器人,称为蜘蛛,来构建网站上找到的词语列表。当蜘蛛构建其列表时,这个过程被称为网页抓取。(将互联网的一部分称为万维网有一些缺点——大量以蜘蛛为中心的工具名称就是其中之一。)为了构建和维护一个有用的词语列表,搜索引擎的蜘蛛必须查看大量的页面。
任何蜘蛛是如何开始在网络上“旅行”的呢?通常的起点是常用服务器的列表和非常流行的页面。蜘蛛会从一个热门网站开始,索引其页面上的词语,并跟踪该网站内找到的每一个链接。通过这种方式,抓取系统迅速开始“旅行”,扩散到网络上使用最广泛的部分。
谷歌最初是一个学术搜索引擎。在描述其系统构建方式的论文中,谢尔盖·布林(Sergey Brin)和拉里·佩奇(Lawrence Page)举例说明了他们的蜘蛛工作速度有多快。他们构建的初始系统使用多个蜘蛛,通常一次使用三个。每个蜘蛛可以同时保持大约300个到网页的连接。在其峰值性能下,使用四个蜘蛛,他们的系统每秒可以抓取超过100个页面,每秒生成约600千字节的数据。
为了使所有一切都快速运行,他们构建了一个系统来向蜘蛛提供必要的信息。早期的谷歌系统有一个专门用于向蜘蛛提供URL的服务器。谷歌没有依赖互联网服务提供商的域名服务器(DNS)来将服务器名称转换为地址,而是拥有自己的DNS,以将延迟降至最低。
当谷歌蜘蛛查看HTML页面时,它会注意到两件事:
- 页面内的词语
- 词语出现的位置
标题、副标题、元标签以及其他相对重要位置出现的词语在后续用户搜索中会得到特殊考虑。谷歌蜘蛛旨在索引页面上的每一个重要词语,而省略“a”、“an”和“the”等冠词。其他蜘蛛则采取不同的方法。
这些不同的方法通常旨在让蜘蛛运行得更快,让用户搜索更高效,或两者兼而有之。例如,有些蜘蛛会跟踪标题、副标题和链接中的词语,以及页面上最常用的100个词语和文本前20行中的每个词语。据称Lycos就采用这种网页抓取方法。
其他系统,如AltaVista,则走向另一个方向,索引页面上的每一个词语,包括“a”、“an”、“the”以及其他“不重要”的词语。这种追求完整性的方法与另一些系统对网页中不可见部分(即元标签)的关注不谋而合。 在下一页了解更多关于元标签的信息。