欢迎来到天天文库
浏览记录
ID:1430660
大小:612.50 KB
页数:60页
时间:2017-11-11
《网络爬虫的设计与实现毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、网络爬虫的设计与实现毕业论文目录第一章引言1第二章相关技术介绍22.1JAVA线程22.1.1线程概述22.1.2JAVA线程模型22.1.3创建线程32.1.4JAVA中的线程的生命周期42.1.5JAVA线程的结束方式42.1.6多线程同步52.2URL消重52.2.1URL消重的意义52.2.2网络爬虫URL去重储存库设计52.2.3LRU算法实现URL消重72.3URL类访问网络82.4 爬行策略浅析82.4.1宽度或深度优先搜索策略82.4.2聚焦搜索策略92.4.3基于内容评价的搜索策略92.4.4基于链接结构评
2、价的搜索策略102.4.5基于巩固学习的聚焦搜索112.4.6基于语境图的聚焦搜索11第三章系统需求分析及模块设计133.1系统需求分析133.2SPIDER体系结构133.3各主要功能模块(类)设计143.4SPIDER工作过程14第四章系统分析与设计164.1SPIDER构造分析164.2爬行策略分析174.3URL抽取,解析和保存184.3.1URL抽取184.3.2URL解析194.3.3URL保存19第五章系统实现21I5.1实现工具215.2爬虫工作215.3URL解析225.4URL队列管理245.4.1URL
3、消重处理245.4.2URL等待队列维护265.4.3数据库设计27第六章系统测试29第七章结论32参考文献33致谢34外文资料原文35译文51I第一章引言第一章引言随着互联网的飞速发展,网络上的信息呈爆炸式增长。这使得人们在网上找到所需的信息越来越困难,这种情况下搜索引擎应运而生。搜索引擎搜集互联网上数以亿计的网页,并为每个词建立索引。在建立搜索引擎的过程中,搜集网页是非常重要的一个环节。爬虫程序就是用来搜集网页的程序。以何种策略偏历互联网上的网页,也成了爬虫程序主要的研究方向。现在比较流行的搜索引擎,比如google,百
4、度,它们爬虫程序的技术内幕一般都不公开。目前几种比较常用的爬虫实现策略:广度优先的爬虫程序,Repetitive爬虫程序,定义爬行爬虫程序,深层次爬行爬虫程序。此外,还有根据概率论进行可用Web页的数量估算,用于评估互联网Web规模的抽样爬虫程序;采用爬行深度、页面导入链接量分析等方法,限制从程序下载不相关的Web页的选择性爬行程序等等。爬虫程序是一个自动获取网页的程序。它为搜索引擎从互联网上下载网页,是搜索引擎的重要组成部分。爬虫程序的实现策略,运行效率直接影响搜索引擎的搜索结果。不同的搜索引擎,会根据对搜索结果的不同需求
5、,选择最合适的爬行策略来搜集互联网上的信息。高效,优秀的爬虫程序可以使人们在互联网上寻找到更及时,更准确的信息。实现网络爬虫的重点和难点有:多线程的实现;对临界资源的分配;遍历web图的遍历策略选择和实现;存储数据结构的选择和实现。本文通过JAVA语言实现一个基于广度优先偏历算法的多线程爬虫程序。通过实现此爬虫程序可以定点搜集某一站点的URLs,如果需要搜集其他信息,可以在解析URLs的同时,解析获取相应信息。57第二章相关技术介绍第二章相关技术介绍2.1JAVA线程2.1.1线程概述几乎每种操作系统都支持线程的概念—进程就
6、是在某种程度上相互隔离的,独立运行的程序。一般来说,这些操作系统都支持多进程操作。所谓多进程,就是让系统(好像)同时运行多个程序。比如,我在MicrosoftWord编写本论文的时候,我还打开了一个mp3播放器来播放音乐,偶尔的,我还会再编辑Word的同时让我的机器执行一个打印任务,而且我还喜欢通过IE从网上下载一个Flash动画。对于我来说,这些操作都是同步进行的,我不需要等一首歌曲放完了再来编辑我的论文。看起来,它们都同时在我的机器上给我工作。事实的真相是,对于一个CPU而言,它在某一个时间点上,只能执行一个程序。CPU
7、不断的在这些程序之间“跳跃”执行。那么,为什么我们看不出任何的中断现象呢?这是因为,相对于我们的感觉,它的速度实在太快了。我们人的感知时间可能以秒来计算。而对于CPU而言,它的时间是以毫秒来计算的,从我们肉眼看来,它们就是一个连续的动作。因此,虽然我们看到的都是一些同步的操作,但实际上,对于计算机而言,它在某个时间点上只能执行一个程序,除非你的计算机是多CPU的。多线程(Multi-Thread)扩展了多进程(multi-Process)操作的概念,将任务的划分下降到了程序级别,使得各个程序似乎可以在同一个时间内执行多个任务
8、。每个任务称为一个线程,能够同时运行多个线程的程序称为多线程程序。多线程和多进程有什么区别呢?对于进程来说,每个进程都有自己的一组完整的变量,而线程则共享相同的数据。2.1.2JAVA线程模型我们知道,计算机程序得以执行的三个要素是:CPU,程序代码,可存取的数据。在JAVA语言中,多线程
此文档下载收益归作者所有