周末看了几个爬虫(Arachnid、arale、heritrix)的原理,感觉heritrix的架构是其中比较合理和有弹性的,就是太复杂了,除了core framework外,还有写了一个web server,及在此之上搭建了一个控制台,按它自己的说法,heritrix是一个完整的crawler,可以通过配置就让它为实际业务服务。其中core framework里面,还有很多东西可能为了追求性能而自己DIY的,看的头晕…
参考heritrix的架构,写了一个简单的爬虫,性能还行,并发5个链接,在一分钟内爬了上千个链接下来,如果不做频率限制,怕把对方网站拖死了,呵呵。
btw: 发现写java代码确实快,API多,开源库也多,总共用了2个库(commons-httpclient-3.0.1.jar, jericho-html-2.3.jar),总共不到500行,就实现了页面url和用户名抽取两个功能,并能根据url和设定的深度进行递归爬。