整个的宽度优先爬虫过程就是从一系列的种子节点开始,把这些网页中(种子结点网页)的“子节点” (也就是超链接)提取出来,放入队列中依次进行抓取。被处理过的链接需要放入一张表(通常称 为 Visited 表)中。每次新处理一个链接之前,需要查看这个链接是否已经存在于 Visited 表 中。如果存在,证明链接已经处理过,跳过,不做处理,否则进行下一步处理。实际的过 程如图 1.5 所示。
初始的 URL 地址是爬虫系统中提供的种子 URL(一般在系统的配置文件中指定)。当解析这些种子 URL 所表示的网页时,会产生新的 URL(比如从页面中的<a href= “http://www.admin.com”中提取出 http://www.admin.com 这个链接)。然后,进行以下工作:
(1) 把解析出的链接和 Visited 表中的链接进行比较,若 Visited 表中不存在此链接,表示其未被访问过。
(2) 把链接放入 TODO 表(TODO表用于存放未访问的链接URL)中。
(3) 处理完毕后,再次从 TODO 表中得一条链接,直接放入 Visited 表中。
(4) 针对这个链接所表示的网页,继续上述过程。如此循环往复。
表 1.3 显示了对图 1.3 所示的页面的爬取过程。