搜索引擎网络爬虫代码设计与实现.doc
《搜索引擎网络爬虫代码设计与实现.doc》由会员分享,可在线阅读,更多相关《搜索引擎网络爬虫代码设计与实现.doc(37页珍藏版)》请在沃文网上搜索。
1、 第 37 页 共 37 页1 绪论1.1 课题的研究背景随着计算机网络的不断发展,越来越多的用户以及开发人员深切地感受到了计算机技术在搜索领域中的作用越来越重要,越来越要求搜索引擎执行效率。掌握计算机是生活的需要,是职业的需要,更是产业发展的需要,更是为了创造更高的经济利润的需要。信息在社会和经济的发展中所起的作用越来越为人们所重视。随着网络的迅速发展,万维网称为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。在计算机的三大主要应用领域(科学计算、数据处理与过程控制)中,数据处理的比重约占70%左右。计算机
2、作为信息处理的工具,为适应数据处理需求的迅速提高,满足各类信息系统对数据管理的要求,在文件系统的基础上发展起了数据库系统。 数据库技术产生于60年代末,70年代初期,其主要目的是有效地管理和存取大量的数据资源。数据库技术主要研究如何存储、使用和管理数据,是计算机数据管理技术发展的最新阶段。数据库存储的是通用化的相关数据集合,它不仅包括数据本身,而且包括数据之间的联系。30多年来,数据库在理论上、实现技术上均得到很大的发展,研制出许多商用数据库管理系统,使得计算机应用渗透到各行各业的各类管理工作中。现在,数据库技术已成为计算机领域里最重要的技术之一,是软件学科的一个独立分支。近年来,数据库技术和
3、计算机网络技术的发展相互渗透、相互促进,已成为当今计算机领域内发展迅速、应用广泛的两大领域。数据库系统是数据处理的核心机构,售楼管理系统、办公自动化系统、决策支持系统等都是使用了数据库管理系统或数据库技术的计算机应用系统。 互联网已经进入大家的生活,利用互联网来获取有价值的信息势在必行。本课题主要是实现一个搜索引擎,主要功能是抓取网络上的网页中的信息,进行过滤返回相关有用的信息。通过本系统,用户只需输入关键字,系统进行处理后,将会返回与关键字相关联的信息。1.2 课题的研究现状目前为止,随着互联网的普及,使用计算机的人越来越多,那么需要查找信息的的功能就越显得重要。从而使得搜索引擎应需求而生,
4、搜索引擎作为一个辅助人们检索信息的工具已经显得越来越重要。搜索引擎按其工作方式可以分为三种,分别是全文搜索引擎,目录搜索类引擎和元搜索引擎。全文搜索引擎是常用的搜索引擎,大家最熟悉的就是国外的代表Google,和国内的百度。它们通常都是提取各个网站的网页文字存放在建立的数据库中,检索与用户查询条件匹配的相关记录,然后按其自己设定的排列数序将结果返回给用户。目录索引,就是将网站分类,然后存放在响应的目录里,用户在查询所需要的内容时有两种选择,一种是关键字搜索,另一种是按分类目录一层一层的查找。目录索引只能说有搜索功能,但仅仅是按照目录分类的网站链接列表。用户完全可以不用进行关键字查询,仅靠分类目
5、录也可以找到需要的信息。目录搜索型引擎中最具代表性的是Yahoo。元搜索引擎可以同时在其他多个引擎上进行搜索,将搜索结果进行统一处理,并将结果以统一 的格式返回给用户。正因为如此,这类搜索引擎的有点是返回结果的信息量更全面,但是缺点就是无用的信息太多不能准确的找到用户所需要的结果。在搜索结果排列方面,不通的元搜索引擎有不通的结果排列的方式,如Dogpile,就直接按来源引擎排列搜索结果,如Vivisimo,是按自定的规则将结果重新进行排列。网络快速发展的今天,互联网承载着海量的信息,能够准确快速的提取我们所需要的信息是现在的挑战。传统的搜索引擎有Yahoo,Google,百度等,这些检索信息的
6、工具是每天访问互联网的必经之路。但是,这些传统性搜索引擎存在着局限性,它不能全面的准确的找到所需要的信息,也会使一些和需求无关的内容一起搜索到。严重的降低了使用这些信息的效率,所以说提高检索信息的速度和质量是一个专业搜索引擎的主要研究内容。1.3 课题的研究意义网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其
7、放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个实用的、高效的系统。1.4 课题的发展趋势网络爬虫有两种描述方式,一种是基于目标数据模式的爬虫针对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据模式,另一种描述方式是建立目标领域的本地或词典,
8、用于从语义角度分析不同特征在同一主题的重要程度。随着AJAX/Web2.0的流行,如何抓取AJAX等动态页面成了搜索引擎急需解决的问题。如果引擎依旧采用爬的机制,是无法抓取到AJAX页面的有效数据的。对于AJAX这样的技术,所需要的爬虫引擎必须是基于驱动的。如果想要实现事件驱动,首先需要解决以下问题:第一,JavaScript的交互分析和解释;第二,DOM事件的处理和解释分发;第三,动态DOM内容语义的抽取。1.5 课题的主要内容介绍本论文共分为5个章节,分别为:绪论、系统相关技术的研究、系统需求分析、系统的总体设计和代码设计与实现。第一章绪论,共分为课题的研究背景、研究现状、研究意义、发展趋
9、势和主要内容介绍等5条,从整体上对本课题进行了分析,使得对于本课题的开发过程有一个大概的了解。第二章是系统相关技术的研究,主要介绍了本课题所采用的各种相关技术。首先介绍了JAVA,说明开发本课题的主要技术是怎样使用的。然后介绍了所用到的后台的数据库,以及与数据库的连接技术。最后介绍了开发过程中用到的JAVA相关的技术的使用,并分析了该技术的特性。第三章是系统需求分析,从系统的可行性方面和需求方面来分析系统的需求,可行性分析是从技术、经济上和管理上来进行阐述最后得出结论有必要开发这个系统;而需求分析是从用户的角度、系统资源方面、性能需求方面以及功能需求方面来对系统进行分析。第四章是系统的总体设计
10、,从系统的设计分析、数据表的结构规划对系统进行总体设计,其中设计分析是用了系统功能分析,系统功能模块设计,数据库需求分析,数据库设计,覆盖了需求分析中所要求达到的功能需求。第五章是代码设计与实现,系统分为本地搜索、网络搜索两大模块组成,每个部分又可以分成很多小模块。每个模块进行截图分析设计的同时都进行详细设计,写出了它们的关键代码。2 系统相关技术的研究2.1 JAVA简介 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web
11、、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java分为三个体系J
12、ava SE(Java2 Platform Standard Edition,java平台标准版),Java EE(Java 2 Platform Enterprise Edition,java平台企业版),Java ME(Java 2 Platform Micro Edition,java平台微型版)。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势
13、和广阔前景。Java的特点:1、 Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、 Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用
14、动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、 Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、 Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 5、 Java语言是安
15、全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、 Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7、 Java语言
16、是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 8、 Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、 Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-T
17、ime)编译器技术的发展越来越接近于C+。10、 Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机
18、制(关键字为synchronized)。11、 Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业
19、应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2 MySQL 数据库简介MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。相对于其它系统而言,MySQL数据库可以称得上是目前运行速度最快的SQL语言数据库。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(
20、MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。MySQL还具有以下特点:1 同时访问数据库的用户数量不受限制。2 可保存超过50,000,000条记录。3 是目前市场上现有产品中运行速度最快的数据库系统。4 用户权限设置简单、有效。5 使用C和C+编写,并使用了多种编译器进行测试,保证了源代码的可移植性。6 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD
21、、OS/2 Wrap、Solaris、Windows等多种操作系统。7 为多种编程语言提供了API。8 支持多线程,充分利用CPU资源。9 优化SQL查询算法,有效地提高查询速度。10 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。11 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。12 提供用于管理、检查、优化数据库操作的管理工具。13 可以处理用户上千万记录的大型数据库。14 支持多种存储引擎。2.3 JAVA与数据库
22、连接本文说明的系统是利用MySQL厂商提供的驱动与数据库链接的。这种实现方法是直接使用数据库厂商提供的用专用的网络协议创建的驱动程序,通过它可直接将JDBC API调用转换为直接网络调用。这种调用方式性能好、简单易用。这种方法的通行方式如下:应用程序-JDBC API-驱动程序-数据源JDBC是一种可用于执行SQL语句的Java API,由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是
23、说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQL Server。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平如上运行,不必在不同的平台上编写不用的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“Write Once,Run Everywhere!”。Java具有健壮、安全、易用等特性,而且支持自动网上下载,本质上是一种很好的数据库应用的编程语言。它所需要的是Java应用如何同各种各样的数据库连接。JDB
24、C正是实现这种连接的关键。2.4 JavaScriptJavaScript是一种基于对象和事件驱动的客户端脚本语言。JavaScript最初的设计是为了检验HTML表单输入的正确性。JavaScript起源于Netscape公司的LiveScript语言。JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中连接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序 等。它是通过嵌入或调入到标准的HTML语言中实现的。它的出现弥
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜索引擎 网络 爬虫 代码 设计 实现