您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 网络爬虫的设计与实现 毕业论文
摘要Ⅰ摘要网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息等。本文通过JAVA实现了一个基于广度优先算法的多线程爬虫程序。本论文阐述了网络爬虫实现中一些主要问题:为何使用广度优先的爬行策略,以及如何实现广度优先爬行;为何要使用多线程,以及如何实现多线程;系统实现过程中的数据存储;网页信息解析等。通过实现这一爬虫程序,可以搜集某一站点的URLs,并将搜集到的URLs存入数据库。【关键字】网络爬虫;JAVA;广度优先;多线程。ABSTRACTIIABSTRACTSPIDERisaprogramwhichcanautocollectinformationsfrominternet.SPIDERcancollectdataforsearchengines,alsocanbeaDirectionalinformationcollector,collectsspecificallyinformationsfromsomewebsites,suchasHRinformations,houserentinformations.Inthispaper,useJAVAimplementsabreadth-firstalgorithmmulti-threadSPDIER.ThispaperexpatiatessomemajorproblemsofSPIDER:whytousebreadth-firstcrawlingstrategy,andhowtoimplementbreadth-firstcrawling;whytousemulti-threading,andhowtoimplementmulti-thread;datastructure;HTMLcodeparse.etc.ThisSPIDERcancollectURLsfromonewebsite,andstoreURLsintodatabase.【KEYWORD】SPIDER;JAVA;BreadthFirstSearch;multi-threads.目录第一章引言.......................................................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基于链接结构评价的搜索策略...............................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第五章系统实现..................................................215.1实现工具.....................................................215.2爬虫工作.....................................................215.3URL解析.....................................................225.4URL队列管理.................................................245.4.1URL消重处理..............................................245.4.2URL等待队列维护..........................................265.4.3数据库设计...............................................27第六章系统测试..................................................29第七章结论......................................................32参考文献.........................................................33致谢.............................................................34外文资料原文.....................................................35译文.............................................................50第一章引言1第一章引言随着互联网的飞速发展,网络上的信息呈爆炸式增长。这使得人们在网上找到所需的信息越来越困难,这种情况下搜索引擎应运而生。搜索引擎搜集互联网上数以亿计的网页,并为每个词建立索引。在建立搜索引擎的过程中,搜集网页是非常重要的一个环节。爬虫程序就是用来搜集网页的程序。以何种策略偏历互联网上的网页,也成了爬虫程序主要的研究方向。现在比较流行的搜索引擎,比如google,百度,它们爬虫程序的技术内幕一般都不公开。目前几种比较常用的爬虫实现策略:广度优先的爬虫程序,Repetitive爬虫程序,定义爬行爬虫程序,深层次爬行爬虫程序。此外,还有根据概率论进行可用Web页的数量估算,用于评估互联网Web规模的抽样爬虫程序;采用爬行深度、页面导入链接量分析等方法,限制从程序下载不相关的Web页的选择性爬行程序等等。爬虫程序是一个自动获取网页的程序。它为搜索引擎从互联网上下载网页,是搜索引擎的重要组成部分。爬虫程序的实现策略,运行效率直接影响搜索引擎的搜索结果。不同的搜索引擎,会根据对搜索结果的不同需求,选择最合适的爬行策略来搜集互联网上的信息。高效,优秀的爬虫程序可以使人们在互联网上寻找到更及时,更准确的信息。实现网络爬虫的重点和难点有:多线程的实现;对临界资源的分配;遍历web图的遍历策略选择和实现;存储数据结构的选择和实现。本文通过JAVA语言实现一个基于广度优先偏历算法的多线程爬虫程序。通过实现此爬虫程序可以定点搜集某一站点的URLs,如果需要搜集其他信息,可以在解析URLs的同时,解析获取相应信息。电子科技大学成都学院本科毕业设计论文2第二章相关技术介绍2.1JAVA线程2.1.1线程概述几乎每种操作系统都支持线程的概念—进程就是在某种程度上相互隔离的,独立运行的程序。一般来说,这些操作系统都支持多进程操作。所谓多进程,就是让系统(好像)同时运行多个程序。比如,我在MicrosoftWord编写本论文的时候,我还打开了一个mp3播放器来播放音乐,偶尔的,我还会再编辑Word的同时让我的机器执行一个打印任务,而且我还喜欢通过IE从网上下载一个Flash动画。对于我来说,这些操作都是同步进行的,我不需要等一首歌曲放完了再来编辑我的论文。看起来,它们都同时在我的机器上给我工作。事实的真相是,对于一个CPU而言,它在某一个时间点上,只能执行一个程序。CPU不断的在这些程序之间“跳跃”执行。那么,为什么我们看不出任何的中断现象呢?这是因为,相对于我们的感觉,它的速度实在太快了。我们人的感知时间可能以秒来计算。而对于CPU而言,它的时间是以毫秒来计算的,从我们肉眼看来,它们就是一个连续的动作。因此,虽然我们看到的都是一些同步的操作,但实际上,对于计算机而言,它在某个时间点上只能执行一个程序,除非你的计算机是多CPU的。多线程(Multi-Thread)扩展了多进程(multi-Process)操作的概念,将任务的划分下降到了程序级别,使得各个程序似乎可以在同一个时间内执行多个任务。每个任务称为一个线程,能够同时运行多个线程的程序称为多线程程序。多线程和多进程有什么区别呢?对于进
本文标题:网络爬虫的设计与实现 毕业论文
链接地址:https://www.777doc.com/doc-3595173 .html