毕业答辩已经过去两个多星期,成绩良好,也没想冲优,考研之后越发的懒散。近日想想应该做个总结,从一个整体的角度来看待毕设,也许会有不一样的收获。
毕业设计题目是“面向竹藤领域的网络爬虫系统的研究与开发”,题目很长,因而有点小玄乎,糊弄人。导师名义上是一个老教授,实际上是与老教授同一个课题组 的年轻老师。
--------------------------------------------------------------************------------------------------------------------------------
毕设的具体内容大致如下:
1.基于开源爬虫Heritrix进行扩展定制,形成一个符合特定需求(即面向竹藤领域)的聚焦爬虫(注:聚焦爬虫 的工作流程比较复杂,需要根据一定的网页分析算法过滤与主题无关的网页,保存有用的连接并且添加到等待抓取得url对列中,并根据一定的搜索策略 从等待队列中选择下一步要抓取的连接。重复着一个过程,直到满足一定条件为止。)。
本来个人想基于HttpClient和HTMLParser从头开始写爬虫,但导师考虑到爬虫的性能以及工作量的问题,建议基于已有的开源爬虫进行扩展。于是我对很多开源爬虫进行特性的对比,最终由于灵活的可扩展性而选择了Heritrix,简单的说,Heritrix是一个爬虫框架。
接下来的工作说难不难,说容易也不容易,个人认为重点难点在于了解Heritrix的体系结构---灵活的模块式结构。只有充分了解这一点,才会知道对哪个模块进行扩展,怎样扩展,为什么可以这样扩展。由于以前没接触过类似的工作,所以开始时候非常没有方向。幸好有个同学以前做过这方面的开发,而且Heritrix相关文档也比较多,毕设得以顺利进行。
图1:Heritrix体系结构
扩展工作则是按照特定需求编写两个类插入上图所示的Extractor Chain和Postprocess Chain,替换或者配合已有的类进行工作。因为同学做过这方面的工作,通过请教使得扩展没有太大的难度。我分别针对三个竹藤领域的重要网站写了Extractor抽取类,我觉得这样的抽取类没有多大的实用性,因为按照我的抽取策略,每个网站的域名不一样,结构也不一样,就必须写出对应的抽取类。