对爬虫下一步的打算
在临时解决好robots文件的bug后,发现爬虫在爬行数小时后依然会出错,且该错误原因不明,从定位的出错代码无法看出任何错误相关信息,初步判断该bug应该是与并行化有关。
对于稳定爬虫拟采取以下三个方式:
- 目前的爬虫是基于NCrawler的dotnet3.5版,利用vs2010的并行化支持,对其并行化之后实现的。该方法实现了对不同网站的并行爬行,大大提高了爬虫的效率,可是原版本在并行化后,可能导致出现bug,估计上述无法确定的错误就于此有关。
- NCrawler还提供了dotnet4.0版,已经是并行化的版本了,但是其本身只对同一个网站并行爬行。此种方法对于爬虫的效率提高能力有限,因对同一网站不间断的大量爬行容易变成对该网站的攻击,导致其不能访问,所以爬行之后必须有一个合理的时间间隔,这将导致该版本效率提高有限。基于此版本修改,使其可以对不同网站执行并行处理,以提高其效率。目前的问题是工作量大小未知(应该不太大),且修改成功后亦不能保证就会是一个稳定版本。
- 因为NCrawler是一个活跃的正在开发中的开源爬虫,其稳定性和效率还有待考验。考虑于此同时可以学习arachnode.net,该爬虫是目前dotnet平台最成熟的一个开源爬虫,且已经集成了lucene.net的分词功能,已经是一个比较完整的搜索引擎。基于该爬虫的修改应该可以保证效率和稳定性,只是arachnode.net的15万行代码相对于NCrawler的2万行代码会很难消化……