毕业设计WEB音乐搜索软件的设计与实现论文.docx

上传人:聆听****声音 文档编号:710432 上传时间:2023-04-29 格式:DOCX 页数:31 大小:117.04KB
下载 相关 举报
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第1页
第1页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第2页
第2页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第3页
第3页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第4页
第4页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第5页
第5页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第6页
第6页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第7页
第7页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第8页
第8页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第9页
第9页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第10页
第10页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第11页
第11页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第12页
第12页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第13页
第13页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第14页
第14页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第15页
第15页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第16页
第16页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第17页
第17页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第18页
第18页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第19页
第19页 / 共31页
毕业设计WEB音乐搜索软件的设计与实现论文.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

毕业设计WEB音乐搜索软件的设计与实现论文.docx

《毕业设计WEB音乐搜索软件的设计与实现论文.docx》由会员分享,可在线阅读,更多相关《毕业设计WEB音乐搜索软件的设计与实现论文.docx(31页珍藏版)》请在冰点文库上搜索。

毕业设计WEB音乐搜索软件的设计与实现论文.docx

毕业设计 (论文 )

Web音乐搜索软件的设计与实现

论文作者姓名:

申请学位专业:

申请学位类别:

指导教师姓名(职称

论文提交日期:

Web音乐搜索软件的设计与实现

摘 要

当前,面对浩瀚的网络资源,搜索引擎为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以借助于搜索引擎到达自己想去的网上任何一个地方。

因此它也成为除了电子邮件以外人们使用最多的网上服务。

着Internet的快速发展,海量信息和人们获取所需信息能力之间的矛盾日益明显,在信息海洋里查找信息,如同大海捞针一样,搜索引擎恰好解决了这一难题。

Web音乐搜索软件是采用Java语言开发的简易的互联网音乐搜索引擎,它是集网络爬虫(采用java内置的多线程及Socket技术)和基于B/S结构的Web查询(Struts框架)为一体的搜索软件。

该系统能完成对互联网的音乐信息的采集、分析、分类、保存和查询等功能;经过测试与分析,说明本系统运行稳定、可靠,具有一定的实用价值。

关键字:

音乐;搜索软件;网络爬虫;Socket技术;Struts框架;多线程

DesignandImplementationofWebMusicSearchSoftware

Abstract

Atpresent,inthevastnetworkresource,searchengineforallInternetsurfingusersprovidestheoneentrance.NoexaggerationtosaythatalluserscanbereachedanyoneplaceontheInternetbytheaidofsearchengines.SoithasbecomethemostusingonlineservicesforpeopleexceptE-mail.However,withtherapiddevelopmentoftheInternet,thecontradictionsbetweenmassiveinformationandobtainingthecapacityofrequiredinformationisobviousdaybyday.Searchingforinformationinvastnetworkresourcesislikelookingforneedlesinahaystack,butsearchenginejustsolvesthisproblem.

Thesoftwareisaboutwebmusicsearch.ItusesjavatodevelopasimpleInternetmusicsearchengine,andalsogathersthenet-reptile(intra-builderjavamulti-threadandsockettechnology)andwebsearchbasedonB/Sconstruction(strutsframework)asawholesearchsoftware.Itcanachievethecollection,analysis,classification,storageandsearchofInternetmusicinformation.Throughthetestandanalysis,itshowsthissystemisstable,reliable,andhassomepracticalvalues.

Keywords:

Music;SearchSoftware;Crawl;SocketTechnology;StrutsStructure;Multi-thread

目 录

论文总页数:

21页

1引言 1

1.1课题背景 1

1.2国内外研究现状 1

1.3本课题研究的意义 2

1.4本文的主要工作 2

2Web音乐搜索软件的需求分析 2

2.1搜集信息 2

2.2整理信息 2

2.3接受查询 3

3Web音乐搜索软件的设计 3

3.1系统总体流程 3

3.2系统部件介绍 4

4Web音乐搜索软件的具体实现 5

4.1数据设计 5

4.2网络爬虫设计 5

4.2.1遍历算法 6

4.2.2模拟浏览器 8

4.2.3正则表达式 9

4.2.4数据分析 12

4.3采用java多线程技术 13

4.4web查询端 14

4.4.1Struts框架 14

4.4.2Struts包内容 14

4.4.3Struts体系结构 15

5运行测试与分析 17

5.1软件试运行 17

5.2软件分析 19

结 论 19

参考文献 19

致 谢 20

声 明 21

1

1引言

1.1课题背景

面对浩瀚的网络资源,搜索引擎为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。

因此它也成为除了电子邮件以外最多人使用的网上服务。

随着因特网的迅猛发展、WEB信息的增加,用户要在信息海洋里查找信息,就如同大海捞针一样,搜索引擎恰好解决了这一难题(它可以为用户提供信息检索服务)。

但是随着Internet的发展,搜索引擎也面临着海量信息和人们获取所需信息能力的矛盾。

因此,信息的高效搜索显得格外重要。

1.2国内外研究现状

搜索引擎技术伴随着WWW的发展是引人注目的。

搜索引擎大约经历了三代的更新发展:

第一代搜索引擎出现于1994年。

这类搜索引擎一般都索引少于

1,000,000个网页,极少重新搜集网页并去刷新索引。

而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。

在实现技术上也基本沿用较为成熟的IR(InformationRetrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个WWW上的应用。

在1994年3月到4月,网络爬虫WorldWebWorm

(WWWW)平均每天承受大约1500次查询。

大约在1996年出现的第二代搜索引擎系统大多采用分布式方案(多个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50,000,000网页的索引数据库,每天能够响应10,000,000次用户检索请求。

1997年11月,当时最先进的几个搜索引擎号称能建立从

2,000,000到100,000,000的网页索引。

Altavista搜索引擎声称他们每天大概要承受20,000,000次查询。

2000年搜索引擎2000年大会上,按照Google公司总裁LarryPage的演讲,

Google正在用3,000台运行Linux系统的个人电脑在搜集Web上的网页,而且以每天30台的速度向这个微机集群里添加电脑,以保持与网络的发展相同步。

每台微机运行多个爬虫程序搜集网页的峰值速度是每秒100个网页,平均速度是每秒48.5个网页,一天可以搜集超过4,000,000网页。

搜索引擎一词在国内外因特网领域被广泛使用,然而他的含义却不尽相同。

在美国搜索引擎通常指的是基于因特网的搜索引擎,他们通过网络机器人程序收集上千万到几亿个网页,并且每一个词都被搜索引擎索引,也就是我们说的

第1页共21页

全文检索。

著名的因特网搜索引擎包括FirstSearch、Google、HotBot等。

在中国,搜索引擎通常指基于网站目录的搜索服务或是特定网站的搜索服务,本人这里研究的是基于因特网的搜索技术。

1.3本课题研究的意义

搜索引擎自动从英特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。

英特网上的信息浩瀚万千,而且毫无秩序,所有的信息像汪洋上的一个个“小岛”,网页链接是这些“小岛”之间纵横交错的桥梁,而搜索引擎,则为你绘制一幅一目了然的信息地图,供你随时查阅。

搜索技术的意义在此。

1.4本文的主要工作

搜索引擎是根据用户的查询请求,查找信息返回给用户。

为了保证用户查找信息的精度和新鲜度,搜索引擎需要建立并维护一个庞大的索引数据库。

一般的搜索引擎由网络爬虫程序、数据分析,查询数据等部分组成。

本文的各章分配是这样安排的:

第一章介绍系统的开发背景;第二章介绍系统的需求分析;第三章介绍系统的总体结构;第四章介绍系统的详细设计;第五章测试与运行本系统;最后是全文的总结。

2Web音乐搜索软件的需求分析

随着因特网的迅猛发展、WEB信息的增加,用户要在信息海洋里查找信息,就像大海捞针一样,搜索引擎恰好解决了这一难题(它可以为用户提供信息检索服务)。

但是随着Internet的发展,搜索引擎也面临着海量信息和人们获取所需信息能力的矛盾。

一个好的搜索引擎不再仅凭借数据库大小、更新频率、检索速度、对多语言的支持这几个基本特性来衡量,如何从庞大的资料库中精确地找到正确的资料,被公认为是下一代搜索技术的竞争要点,智能化、个性化特色的新型引擎成为未来搜索引擎的发展趋势。

搜索引擎需要实现互联网信息的快速查询,要实现以下功能。

2.1搜集信息

搜索引擎的信息搜集基本都是自动的。

搜索引擎利用称为网络蜘蛛(spider)的自动搜索机器人程序来连上每一个网页上的超连结。

机器人程序根据网页链到其它网页中的超链接,就像日常生活中所说的“一传十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。

理论上,若网页上有适当的超链接器人便可以遍历绝大部分网页。

2.2整理信息

搜索引擎整理信息的过程称为“建立索引”。

搜索引擎不仅要保存搜集起来

2

的信息,还要将它们按照一定的规则进行编排。

这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。

想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。

2.3接受查询

用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。

搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。

目前,搜索引擎返回主要是以网页链接的形式提供的,这些通过这些链接,用户便能到达含有自己所需资料的网页。

通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息,以帮助用户判断此网页是否含有自己需要的内容。

3Web音乐搜索软件的设计

根据上一章需求分析的情况,结合本软件所要需实现的功能,进行设计。

本章主要介绍该软件的设计流程及步骤。

3.1系统总体流程

图3.1系统结构

图3.1是本系统结构图,该系统分两大模块:

数据获取模块和用户查询模块所示首先通过网络爬虫从Internet上获取信息(模拟浏览器和遍历算法)保存在

第3页共21页

爬虫(crawl)的缓存中进行分析如果存在音乐连接得出音乐的名字和url,然后调用javabean进行把得到的数据写入数据库,客户端过浏览器访问TOMCAT(java

web中间件)对数据进行查询,得到用户查询结果。

3.2系统部件介绍

(1)网络爬虫

网络爬虫(crawl),是一个功能很强的WEB扫描程序。

它可以在扫描WEB页面的同时检索其内的超链接并加入扫描队列等待以后扫描。

因为WEB中广泛使用超链接,所以一个crawl程序理论上可以访问整个WEB页面。

为了保证网络机器人遍历信息的广度和深度需要设定一些重要的链接并制定相关的扫描策略。

(2)搜索

网络机器人将遍历得到的页面存放在系统缓存中,为了提高检索效率,用正则表达式对得到的文本数据进行分析,分析出music的超链接和名字并保存到

mysql数据库内方便查找而且执行效率很高。

用户输入搜索条件后搜索程序将通过数据库进行检索然后把符合查询要求的数据库按照一定的策略进行分级排列并且返回给用户。

(3)基于Struts框架的client端

Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。

由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。

Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中。

(4)Tomcat的Web服务器

Web服务器是在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器。

Web服务器如何工作:

在Web页面处理中大致可分为三个步骤:

第一步,Web浏览器向一个特定的服务器发出Web页面请求;

第二步,Web服务器接收到Web页面请求后,寻找所请求的Web页面,并将所请求的Web页面传送给Web浏览器;

第三步,Web服务器接收到所请求的Web页面,并将它显示出来。

Tomcat是一个开放源代码、运行servlet和JSPWeb应用软件的基于Java的Web应用软件容器。

Tomcat由Apache-Jakarta子项目支持并由来自开放性源代码Java社区的志愿者进行维护。

TomcatServer是根据servlet和JSP规范进行执行的,因此我们就可以说TomcatServer也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。

4

(5)mysql的关系型数据库

MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQLAB开发、发布和支持。

MySQLAB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。

MySQL是MySQLAB的注册商标。

MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。

MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。

MySQL网站()提供了关于MySQL和MySQLAB的最新的消息。

4Web音乐搜索软件的具体实现

4.1数据设计

本系统的开发采用mysql数据库,它提供强大的数据查询功能,能快速的查找出用户需要的信息。

(1)数据库名:

musicexplorer

(2)表mappingmusic(主要用音乐url和音乐名字的映射)

(3)表结构,如图4.1所示。

图4.1数据库结构

在图4.1中,各字段名的含义如下:

①m_name,音乐名称;

②m_url,音乐的url地址;

③m_type,音乐的类型;

④m_date,采集音乐的时间。

4.2网络爬虫设计

网络爬虫的主要功能是对互联网上的网页进行抓取,对网页进行分析提取出音乐数据方便以后的查询.其功能主要体现在对网页的遍历,和正则比对分析提取出web音乐信息。

输入一个入口网址,和采集的网页数量网络爬虫程序将自动遍历网站信息

第5页共21页

保存到关系数据库中,方便快速查询在爬虫的状态栏目显示当前正分析的网页信息。

在爬虫的文本框里显示已经分析采集到的音乐名称。

4.2.1遍历算法

crawl程序发现超连接后并不调用自己本身而是把超连接加入到等待队列中。

当crawl程序扫描完当前页面后会根据制定的策略访问队列中的下一个超连接

地址。

主要通过crawl.java类来实现。

虽然这里只描述了一个队列,但在实际编程中用到了二个队列,每个队列都保存着同一处理状态的URL。

(1)等待队列:

在这个队列中,URL等待被crawl程序处理。

新发现的

URL也被加入到这个队列中处理队列当crawl程序开始处理时,他们被送到这个队列中错误队列如果在解析网页时出错,URL将被送到这里。

该队列中的

URL不能被移入其他队列中。

(2)完成队列:

如果解析网页没有出错,URL将被送到这里。

该队列中的URL不能被移入其它队列中在同一时间URL只能在一个队列中,我们把它称为URL的状态。

在这个过程中,当一个URL被加入到等待队列中时crawl程序就会开始运行。

只要等待队列中有一个网页或crawl程序正在处理一个网页,程序就会继续他的工作。

当等待队列为空并且当前没有任何网页时,crawl程序就会停止它的工作。

遍历算法源程序如下所示:

publicvoidcrawlx(StringstartUrl,intmaxUrls)throwsException

{

Stringdispalystr="";mp3m=null;

intn=0;

Stringdate=null;da=newDatabase();

HashSetcrawledList=newHashSet();LinkedHashSettoCrawlList=newLinkedHashSet();Searchsea=null;

Analyzerana=null;toCrawlList.add(startUrl);

SimpleDateFormat setDateFormat = new SimpleDateFormat("yyyy/MM/dd

kk:

mm:

ss");

6

date=setDateFormat.format(Calendar.getInstance().getTime());while(toCrawlList.size()>0){

if(maxUrls!

=-1){

if(crawledList.size()==maxUrls){break;

}

}

//GetURLatbottomofthelist.

Stringurl= (String)toCrawlList.iterator().next();

//RemoveURLfromthetocrawllist.toCrawlList.remove(url);

//增加已处理的URL到crawledList

crawledList.add(url);if(hasBeenVisit(url)){

System.out.println("重复:

"+url+"已经去掉");

}

else{addchain.add(url);sea=newSearch(url);

StringpageContents=sea.getMessage();//downloadPage(verifiedUrl);if(pageContents!

=null&&pageContents.length()>0){

//从页面中获取有效的链接

ana=newAnalyzer(pageContents,url);

ArrayList links =ana.linkAnalyzer();//retrieveLinks(verifiedUrl,pageContents,crawledList,limitHost)

List mp3link= ana.mp3analyzer();toCrawlList.addAll(links);

for(Iteratorits=mp3link.iterator();its.hasNext();){m=(mp3)its.next();

Stringsql="INSERTINTO`mappingmusic`(`m_url`,`m_name`,`m_type`,`m_date`

)VALUES('"+m.getUrl()+"','"+m.getName()+"','"+m.getType()+"','"+date+"')";

da.executeInsert(sql);

dispalystr+="名字:

"+m.getName()+"\n"+"类型:

"+m.getType()+"\n"+"地址:

"+m.getUrl()+"\n";

第7页共21页

this.jtextpane.setText(dispalystr);

// System.out.println("名字:

"+m.getName()+"\n"+"地址:

"+m.getUrl()+"\n"+"类型:

"+m.getType());

}

this.jl.setText(url);

System.out.println("正在解析:

"+url);Thread.sleep(300);

}

n++;

}

}

jl.setText("已经完成采集任务共分析"+n+"地址");

System.out.println("共分析"+n+"地址");

}

4.2.2模拟浏览器

模拟浏览器主要是从web服务器上获取网页并把网页保存到本地缓冲区中,方便后续程序分析分类。

模拟浏览器主要通过search.java类来实现。

网络API通过提供URL类让用户能在源代码层使用URL,每一个URL对象都封装了资源的标识符和协议处理程序。

获得URL对象的途径之一是调用

URI对象的toURL()方法。

但是这种选择不一定方便,作为代替,可以调用

URL构造函数来建立URL对象,也可以调用URL的方法来提取URL的组件,打开一个输入流(input stream)从资源中读取信息,获得某个能方便检索资源数据的对象的引用,比较两个URL对象中的URL,获得到资源的连接对象,该连接对象允许代码了解(并写入)更多的资源的信息。

URL类有六个构造函数。

其中最简单的是URL(String url),它有一个

String类型的参数,把URL分解为自己的组件,并把这些组件存储在一个新的

URL对象中。

如果某个URL没有包含协议处理程序或该URL的协议是未知的,其它的五个构造函数会产生一个.MalformedURLException对象。

下面的代码展示了网络爬虫调用网络API提供的URL类从目标服务器获取数据保存到缓冲区中的过程。

模拟浏览器源程序如下所示:

boolean messagedig()throwsException{URLurl;

8

HttpURLConnectionhttp;java.io.InputStreamurlstream=null;

url=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2