web音乐搜索软件的设计与实现—免费毕业设计论文内容摘要:
String pageContents =()。 //downloadPage(verifiedUrl)。 if (pageContents != null amp。 amp。 () 0){ // 从页面中获取有效的链接 ana=new Analyzer(pageContents,url)。 ArrayList links =()。 //retrieveLinks(verifiedUrl, pageContents, crawledList,limitHost) List mp3link= ()。 (links)。 for(Iterator its=()。 ()。 ){ m= (mp3)()。 String sql=INSERT INTO `mappingmusic` ( `m_url` , `m_name` , `m_type`,`m_date` )VALUES (39。 +()+39。 , 39。 +()+39。 , 39。 +()+39。 ,39。 +date+39。 )。 (sql)。 dispalystr+= 名字 :+()+\n+ 类型 :+()+\n+ 地址 :+()+\n。 第 8 页 共 21 页 (dispalystr)。 // ( 名字 :+()+\n+地址 :+()+\n+类型 :+())。 } (url)。 (正在解析: +url)。 (300)。 } n++。 } } (已经完成采集任务共分析 +n+地址 )。 (共分析 +n+地址 )。 } 模拟浏览器 模拟浏览器主要是从 web服务器上获取网页并 把网页保存到本地缓冲区中 ,方便后续程序分析分类。 模拟浏览器 主要通过 类来实现。 网络 API 通过提供 URL类让 用户 能在源代码层使用 URL, 每一个 URL对象都封装了资源的标识符和协议处理程序。 获得 URL对象的途径之一是调用 URI对象的 toURL()方法。 但是这种选择不一定方便 , 作为代替 , 可以调用 URL 构造函数来建立 URL对象 , 也可以调用 URL的方法来提取 URL的组件,打开一个输入流( input stream)从资源中读取信息,获得某个能方便检索资源数据的对象的引用,比较两个 URL对象中的 URL,获得到资源的连接对象,该连接对象允许代码了解(并写入)更多的资源的信息。 URL类有六个构造函数。 其中最简单的是 URL(String url),它有一个 String类型的参数,把 URL分解为自己的组件,并把这些组件存储在一个新的 URL对象中。 如果某个 URL没有包含协议处理程序或该 URL的协议是未知的,其它的五个构造函数会产生一个。 下面的代码展示了 网络爬虫调用网络 API提供的 URL类 从目标服务器获取数据保存到缓冲区中的过程。 模拟浏览器源程 序 如下所示: boolean messagedig() throws Exception { URL url。 第 9 页 共 21 页 HttpURLConnection。 urlstream = null。 url = new URL()。 try { = (HttpURLConnection) ()。 (UserAgent, Mozilla/)。 ()。 urlstream = ()。 } catch (Exception e) { // TODO 自动生成 catch 块 (错误的 URL地址 +url)。 return false。 } reader = new . BufferedReader(new (urlstream))。 String currentline=,sumstring =。 try{ while((currentline=())!=null){ sumstring+=currentline。 //保存在网络缓冲区中 } setMessage(sumstring)。 new String((),gbk)。 } catch( e){ (错误的文件格式: +())。 } return true。 } 正则表达式 正则表达式是一门语言。 有许多正则表达式语法、选项和特殊字符,在 源文件中大家可以查看。 可能比想象 中的要复杂。 组合逻辑是下一步的事情。 只要正确运用,正则表达式能够在字符串提取和文本修改中起到很大的作用。 第 10 页 共 21 页 正则表达式在本程序中的作用是分析网页 中存在的 超链接 并 保存到等待队列中 , 方便爬虫 遍历网页 获取数据 , 并把网页中存在的音乐信息提取出来为爬虫储存数据做准备。 ( 1) 句点符号 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以 “n”字母结束。 另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。 要构造出这个正则表达式,你可以使用一个通配符 ——句点符号 “.”。 这样,完整的 表达式就是 “”,它匹配 “tan”、 “ten”、 “tin”和 “ton”,还匹配 “tn”、 “tpn”甚至 “t n”,还有其他许多无意义的组合。 这是因为句点符号匹配所有字符,包括空格、 Tab字符甚至换行符 如: ① 正则表达式 : ② 匹配: tan,Ten,tin,ton,t n,tn,tpn,等。 ( 2) 方括号符号 为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号( “[]”)里面指定看来有意义的字符。 此时,只有方括号里面指定的字符才参与匹配。 也就是说,正则表达式 “t[aeio]n”只匹配 “tan”、 “Ten”、 “tin”和 “ton”。 但 “Toon”不匹配,因为在方括号之内你只能匹配单个字符: ① 正则表达式 :t[aeio]n ② 匹配 :tan,Ten,tin,ton ( 3) “或 ”符号 如果除了上面匹配的所有单词之外,你还想要匹配 “toon”,那么,你可以使用 “|”操作符。 “|”操作符的基本意义就是 “或 ”运算。 要匹配 “toon”,使用“t(a|e|i|o|oo)n”正则表达式。 这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号 “()”。 圆括号还可以用来分组,具体请参见后面介绍。 ① 正则表达式 :t(a|e|i|o|oo)n ② 匹配 :tan,Ten,tin,ton,toon ( 4) 表示匹配次数的符号 表 ,这些符号用来确定紧靠该符号左边的符号出现的次数。 表 表示次数的符号 符号 次数 0次或者多次 + 1次或者多次 ? 0次或者一次 第 11 页 共 21 页 {n} 恰好 n次 {n,m} 从 n次到 m次 假设要在文本文件中搜索美国的社会安全号码。 这个号码的格式是999999999。 用来匹配它的正则表达式如图一所示。 在正则表达式中,连字符( “”)有着特殊的意义,它表示一个范围,比如从 0到 9。 因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符 “\”。 正则表达 源程序 如下: public class CompareStr { public boolean parestring(String oristring,String tostring) //判断是否存在指定表达式 { Pattern p=null。 //正则表达式 Matcher m=null。 //操作的 字符串 boolean b。 p = (oristring,)。 m = (tostring)。 b = ()。 return b。 } public String replace(String origin,String toString,String s){//替换字符 Pattern p=null。 Matcher m=null。 p=(origin,)。 m=(toString)。 return (s)。 } public String getString(String reg,String s){//返回得到的字符 String res。 Pattern p=null。 Matcher m=null。 p=(reg,)。 m=(s)。 if(()){ return ()。 第 12 页 共 21 页 } 数据分析 因为 Web中的信息都是建立在 HTML协议之上的,所以网络机器人在检索网页时的第一个问题就是如何解析 HTML。 在解决如何解析之前,先来介绍HTML中的几种数据。 ① 文本:除了脚本和标签之外的所有数据。 ② 注释:程序员留下的说明文字,对用户是不可见的。 ③ 简单标签:由单个表示的 HTML标签。 ④ 开始标签和结束标签:用来控制所包含的 HTML代码。 在进行解析的时候不用关心所有的标签,只需要对其中一种重要的进行解析即可。 本软件只关心 超连接标签 ,下面介绍了在本软件中如何使用。 ( 1) 超连接标签 超连接定义了 WWW通过 Inter链接文档的功能。 他们的主要目的是使用户能够任意迁移到新的页面,这正是网络爬虫最关心的标签。 public ArrayList linkAnalyzer() //分析网页上存在的超链接 .保存在等待队列中 public List mp3analyzer() //分析网页上存在的音乐超链接和音乐名称 .保存到数据库中方便查询 ( 2) 超链接分析 以下是本软件所用到的 关键源程序 ( 超链接 ),代码如下: if((href,firstword)amp。 amp。 ({)0amp。 amp。 f(})0amp。 amp。 (39。 )0amp。 amp。 (。 )0amp。 amp。 (.css)0amp。 amp。 (.ico)0amp。 amp。 !(mp3)){ String out=null。 out=(href=|\,firstword,)。 if(( (out)。 } else{//相对的路径 try{ if((html)||(htm)){ int m=(/)。 String s=(0,m)。 第 13 页 共 21 页 webadd=s。 (debug+s+/+out)。 } } catch(StringIndexOutOfBoundsException e ){ } if((/)){ /*int m=(/)。 webadd=(0,m)。 (dafa+webadd)。 */ out=webadd+out。 (out)。 } else{ out=webadd+/+out。 (out)。 } } } i++。 } 采用 java 多线程技术 线程是 Java 的一大 特性 ,它可以是给定的指令序列、给定的方法中定义的变量或者一些共享数据 (类一级的变量 )。 在 Java中每个线程有自己的堆栈和程序计数器( PC),其中堆栈是用来跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前线程正在执行的指令。 ( 1) 线程的生命周期 一个线程的的生命周期可以分成两阶段:生存( Alive)周期和死亡( Dead。web音乐搜索软件的设计与实现—免费毕业设计论文
相关推荐
正反转起动,反接制动和变速冲动。 ( 2)工作台进给电动机 M2有三种控制:进给、快速移动和变速冲动。 ( 3) M3拖动冷却泵提供冷却液,只需单向运行。 ( 4)为了能及时实现控制,机床设置了两套操纵系统,在 机床正面及侧 都安装了相同的按钮、手轮 和手柄,操作方面,以实现两地控制。 ( 5)为了保证安全,防止事故,机床有顺序的动作,采用了联锁。 ( 6)三台电动机都设有过载保护
由于没有重视这一问题,只是大量地阅读文章,没有将一些对这次毕业 设计有价值的文章进行摘录整理,只是凭自己的记忆进行了一些简单的归纳,这样当我阅读量达到一定程度时就没有办法进行整理了,结果在论文的设计时虽然知道在哪些地方需要什么样子的文章进行参考,自己也记得曾看过这样的文章,但是却记不清楚在哪本书里的什么地方,只好重新翻书进行查找,浪费了许多宝贵的时间。 现在我正努力的培养良好的学习习惯
第三 章 动画场景设计概念 6 间,是抽象的,但有具体的特征表现。 社会空间主要是通过物质空间的环境和道具以及角色服饰,行为方式等具体的东西表现出来。 从个性空间出发,可以交代角色生存氛围,从社会空间出发,它是地点、文化、时代特征等人为信息。 社会空间可通过观众的联想与抽象思维来展开故事情节的高潮,通过特定的历史阶段与情绪来为动画片做铺垫。 ( 3)个性空间 个性 空间是相对于社会空间而言的
计文档,详细设计文档,测试文档 应当提供 的服务 : 根据合同或某重点建设工作需要,将向 客 户或委托单位提供的各种服务 : 培训、安装、维护和运行支持等 项目开发环境 : 硬件:电脑,嵌入式开发箱,单片机, POS机 „ .. 软件: J2ME, ARM嵌入式系统开发, keil uvision, wince, c++„„ 项目验收方式与依据 : 验收包括 : 交付前验收、交付后验收
埋区、废水处理区(见表 6- 2)。 垃圾分离堆厂长总平面布置见图 6- 4。 表 6- 2 厂区布置功能分区 区划 设施设备 管理区 综合办公室、计量站、(地磅房)、加油站、洗车 台、配电站、消防水泄、食堂等。 生化制肥区 分选车间、筛分设备、发酵车间、复合肥生产车间、成品仓库 焚烧区 焚烧车间 填埋区 填埋场及配套设施 废水处理区 调节池、生化处理设施、回流泵房等。 管理区
x2zVkumamp。 gTXRm6X4NGpP$vSTTamp。 ksv*3t nGK8! z89Am YWv*3t nGK8!z89Am YWpazadNuKNamp。 MuWFA5uxY7JnD6YWRr Wwc^vR9CpbK!zn%Mz849Gx^Gj qv^$U*3t nGK8! z89Am YWpazadNuKNamp。 MuWFA5uxY7JnD6YWRr Wwc^vR9CpbK