正在给Soukey采摘增加一个爬虫的功能,作为一个任务放到soukey采摘中,这样指定一个入口地址即可将所需的采集的信息采集出来,类似搜索引擎的做法。本以为做一个简单的爬虫程序不是很难,但在编写的时候才发现要想做好,确实有难度。
在此整理了一些,仅供参考:
1、算法:是采用广度优先还是深度优先,从算法考虑,广度优先性能高且算法简单;
2、网址解析:网址解析相对比较容易,但需要考虑是否进行外部网址的探测,如果进行外部网址探测,则就开始了一个蜘蛛网的爬行了;
3、探测网址深度设定:通常情况是所有的网址都可以探测到,只要深度足够,且网站链接做的足够好;
4、重复网址的剔除,很多网页都会共同指向一个网址,这个网址不能重复进行检测;
5、线程同步,多个线程会对一个待检测的队列进行访问,以进行网址探测,不能让多个线程访问统一个网址;
6、数据存储,当需要检测大量的网址时,数据是否还需要存储在内存中,譬如:会检测到几十万的网址;
实际还有很多问题,正在慢慢看,也在优化,现在的性能还不是很好,比起xenu差很远。不过等基本完成后,还是会上传上来,大家一起研究吧,呵呵