Google

Archives

信息的搜集(爬虫,spider)–Web搜索引擎系列2

2.1 搜集的时机

一般来说,搜索引擎这样一个软件系统都是事先收集好网页,存储在本地硬盘上,然后再进行预处理、索引。可以想象如果等用户查询时再爬取成千上万的网页,再一个个分析处理,是不可能满足搜索引擎的响应时间要求的。[1]一般搜索引擎都是使用一种叫网络爬虫(也叫网络爬虫和网络机器人)的程序来完成这项工作,下面我们讲介绍这样一个程序的原理以及其实现。

2.2 网络爬虫介绍

互联网其实就是一张大图,我们可以把每一个网页当作一个节点,把那些超链接(Hyperlinks)当作连接网页的弧。网页中那些蓝色的、带有下划线的文字背后其实藏着对应的网址,当你点下去的的时候,浏览器是通过这些隐含的网址转到相应的网页中的。这些隐含在文字背后的网址称为“超链接”。有了超链接,我们可以从任何一个网页出发,用图的遍历算法,自动地访问到每一个网页并把它们存起来。完成这个功能的程序叫做网络爬虫,或者在一些文献中称为“机器人“(Robot)。世界上第一个网络爬虫是由麻省理工学院 (MIT)的学生马休.格雷(Matthew Gray)在 1993 年写成的。他给他的程序起了个名字叫“互联网漫游者”(“www wanderer”)。以后的网络爬虫越写越复杂,但原理是一样的。

那么网络爬虫如何下载整个互联网。假定我们从一家门户网站的首页出发,先下载这个网页,然后通过分析这个网页,可以找到藏在它里面的所有超链接,也就等于知道了这家门户网站首页所直接连接的全部网页,诸如雅虎邮件、雅虎财经、雅虎新闻等等。我们接下来访问、下载并分析这家门户网站的邮件等网页,又能找到其他相连的网页。我们让计算机不停地做下去,就能下载整个的互联网。

2.2.1 搜集的策略

最长见一种方式就是所谓的“爬行”。我们在遍历互联网这张大图时,既可以从某个网页节点(或节点集)开始深度优先遍历,也可以广度优先遍历。由图论知识我们可以知道, 遍历时必须记录下已经访问过的节点(避免重复),在网络爬虫中,我们使用一个称为“哈希表”(Hash Table)的列表而不是一个记事本纪录网页是否下载过的信息。下面我们要介绍的爬虫WebLech就是采取这一策略。