互联网可以看成一个超级大的“图”,而每个页面可以看成一个“节点”。页面中的链接可以看成是图的“有向边”。因此,能够通过图的遍历得方式对互联网这个超级大“图”进行访问。
图的遍历可以分为宽度优先遍历和深度优先遍历,但是深度优先遍历可能会在深度上过“深”或者陷入黑洞,大多数爬虫都不采用这种方式。另一方面,在爬取网页的时候,有时候不能完全按照宽度优先遍历的方式,而是给待遍历的网页赋予一定的优先级,根据这个优先级进行遍历,这种方法称为带偏好的遍历。
整个的宽度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的“子节点”也就是超链接提取出来,放入队列中依次进行抓取。被处理过的链接需要放入一张表中,通常称为visited表。每次新处理一个链接之前,需要查看这个连接是否已经存在于Visited表中。如果存在,证明链接已经处理过,跳过,不作处理,否则进行下一步处理。
宽度优先遍历是爬虫中使用最广泛的一种爬虫策略,之所以使用宽度优先搜索策略,主要原因有三点:
1,重要的网页往往离种子比较近。
2,万维网的实际深度最多能达到17层,但是到大某个网页总存在一条很短的路径,而宽度优先遍历会以最快的速度达到这个网页。