过滤完后的URLs,再判断它为站内URL或者为站外URL。一般情况下同一网站内的URL的host名因该是一致的。所以我们可以通过判断URLs中是否包含站点host就可以了,如果为站内URL则加入到缓存队列。
4.4. URL队列管理
URL消重处理,我是用LRU算法加上MD5压缩算法来实现的,因为URLs的数量非常巨大,为了节省内存空间。我先通过MD5压缩来得到每个URL对于的一个hash码。这个hash码的长度相对较小,可以节省内存开销。而且产生碰撞的几率非常小,可以忽略不计。
然后这个URL消重队列的文护是用LRULinkedHashMap来实现的,这个Map它总是淘汰重复次数最少的URL。这样就算URL数过大,也可以尽量避免重复下载URL。
有了这个map以后,我就会用URL到里面去碰撞。因为有些网站的URL写法不固定。也许是同一个URL,但是有些在最后一位接续"/"符号,而有些则没有接续。这样当进行URL去重处理时,会认为它们不是一个URL。所以我们必须先除去后面的"/"符号,再进行URL去重判断。
5.系统测试
5.1.测试定义
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤测试:为了发现软件中的错误而运行软件的过程。
5.2.测试方法及结果
该系统使用以黑盒测试方法进行测试:
黑盒测试:它是把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。黑盒测试又称功能测试。
测试用例:
(1) 运行测试:打开程序看是否能正常运行
(2) 功能测试:
a. 在url 文本框中输入要抓取主题的网址,点击run 运行。
b. 查看Log 是否生成
c. 设置系统参数结果是否有变化
测试结果:系统应用功能正常,各程序模块正常。
结 论
从课题着手到现在论文完成,经历了3个月的时间,在这个3个月里,我不断学习探索,从对网络爬虫一无所知,到成功编写出网络爬虫程序。对网络爬虫中比较主流的技术都有了更深的理解。网络爬虫是一个自动搜集互联网信息的工具,实现了网络爬虫,就可以在互联网这样一个巨大的信息海洋里遨游。
这篇论文实现了一个基于广度优先策略的多线程爬虫程序,可以搜集站内URLs,但是在功能细节上还有很多不足,比如系统不够优化,功能不够强大。对于网络爬虫这个庞大的知识体系来说,这篇论文实现的功能只能算是一些皮毛,要深刻地理解爬虫程序,在爬虫程序设计中有所作为,还需要长达几年,或者更长时间的积累,所以在以后的时间,我将继续研究网络爬虫技术,分析设计一些比较复杂的爬行策略,优化爬虫程序,希望在这一课题上达到另一个高度。 面向主题的网络蜘蛛爬虫研究与设计+流程图(5):http://www.youerw.com/jisuanji/lunwen_492.html