Labin、OpenSpider、天网 是三款比较著名的网络爬虫,其中天网现在已经做成了分布式爬虫,据称天网在ftp搜索方面水平比较高。这三款爬虫本人都接触过,对于Labin和天网的源代码也研究过一段时间。、
Larbin:
首先,Labin采用的socket方式是 单线程非阻塞式的爬取。具体的技术实现采用 linux/unix的poll轮询接口。当Larbin读取种子网站以后,会解析出网页中的url.从源代码中来看,Larbin提取url的技术水平并不高,只是采取简单的字符串操作。然而url是各种各样的,字符串操作能否提取90%以上html网页中的url,还值得怀疑。
当被urls被提取以后,Labin建立了四个队列存取之:两个优先权队列、两个普通队列。为什么要这么做呢?我想做着可能这样想:优先权队列用作采集优先权高的url,而这个优先权怎么计算?这个要根据系统的实际情况了!如果是垂直搜索引擎,可能会根据倾向性、内容相关性来打分,分数高则优先级高。甚至会用分类、聚类或者各种评判手段,甚至pagerank/hits 算法来预先计算url的权重。如果是普通搜索引擎,那么可以这样计算打分:要不根据爬取的网页深度,要不根据是否location字段等等。Larbin中优先权是根据什么来计算的,我想读了上面的东西已经不重要了。
既然提取了urls,就要对url进行域名解析。Larbin自建立了一个DNS服务器。关于DNS服务器的运作,鲜有说明。我自己是这样认为的:首先,本地(Larbin)的dns与外网的DNS进行交互,将外网的DNS的相关内容读取进来。然后,就可以响应larbin的解析请求了。所以当开启DNS服务器的时候,应该会有一个大量读取外网DNS内