为了提高网络爬虫的性能,一般会采用分布式的抓取方式,本文主要就其中的网页查重问题进行简单的讨论。
由一个主控节点控制网页的抓取,主控节点负责任务的分派,将各个slave机器上抓取结果网页内的链接进行汇总,查重,再进一步分派新的任务。主控节点上网页的查重可能是比较复杂的任务。
将所有的网页地址进行hash,每个节点负责不同的hash范围,在抓取到网页后,将提取出来的链接分发到各个负责的节点上,进行进一步的抓取。为了控制抓取的深度,需要在发送链接的时候加上当前的深度信息。
各个节点将抓取的数据存储在一个分布式文件系统上,每个节点在发现已有文件的时候,则终止网页的抓取。这种方式很难解决网页的增量抓取问题。
各个节点将抓取到的数据存储在一个分布式数据库上,在抓取网页网页前,检查数据库中的记录,如果不存在,则将记录存储到数据库中,开始抓取,否则终止抓取进程。这种方式的问题抓取的性能可能会受很大影响。
原文:http://blog.csdn.net/sun33170161/article/details/18258733