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音乐搜索软件的设计与实现—计算机毕业设计
相关推荐
(MailMessage) 由于 MailMessage 对象属性多,所以这种调用可以使邮件内容更加丰富,一 般采用这种方式来发送邮件。 在下面的例子里面就是用这种调用方式。 (三 )、 设计思路及步骤: 首先要说明的是在此 程序里面我们用的程序语言是 Visual Basic .NET。 第一步:要包括名称空间 ,加入在程序中使用的程序语言类型: 第二步:初始化 SmtpMail、
观。 应用范围 X5032立式铣床主轴锥孔可直接或通过附件安装各种圆柱铣刀 、圆片铣刀、成型铣刀、端面铣刀等,适于加工各种零件的平面、斜面、沟槽、孔等,是机械制造、 模具、仪器、仪表、汽车、摩托车等行业的理想加工设备。 主要技术参数 主轴端面至工作台距离 (mm) 45~ 415 主轴中心线到床身垂直导轨的距离 (mm) 350 天津职业技术师范大学 2020级专科生毕业论文 8 主轴孔锥度 7
口产品。 ( 2) 提高“三化”水平,增加作业功能,以满足农业生产需求。 黑龙江八一农垦大学毕业设计 4 ( 3) 提高机电、液压一体 化和检测水平,开展联合作业机具的研制。 ( 4) 提高生产企业的加工工艺水平,保证设备制造质量。 我国马铃薯种植面积大幅攀升,这对我国马铃薯收获机机械生产无疑是一个非常好的机遇,但同时也是一种挑战。 总的来说,马铃薯收获市场潜力巨大,如果能充分抓住这个大好时机
7~ 8 搅拌混匀即可 所需压缩空气量为m3(废水 ),压力 80~120kPa。 2 25~ 50 1∶ 35~ 1∶ 40 10~ 20 3 50~ 100 1∶ 25~ 1∶ 35 15~ 30 4 ≥ 100 1∶ 16~ 1∶ 30 15~ 30 第 15 页 共 92 页 硫酸亚铁-石灰法处理含铬废水的特点是:除铬效果好,当使用酸洗废液的硫酸亚铁时,成本较低,处理工艺成熟
座的下部式矩形导轨,与升降台矩形导轨相接,其顶部是燕尾导轨,工作台就借此燕尾导轨与工作台底座配合。 工作台部分是纵向进给系统中的最后一环,在这部分上,可以操纵纵向的手动,机动和快速移动,同时借助于底座和升降台,和可以获 得横向和升降的手动,机动和快速移动,三个方向的进给都有连锁装置。 操纵工作他纵向行程的手柄,安装在工作台底座的顶面中央部位,该手柄有三个位置,即“向右进给”,“向左进给”
强度和韧性 ,又有超硬材料的硬度和耐磨性的新刀具材料也完全有可能出现。 本文主要讲述以 80C196KC 单片机为核心,完成了信号输入回路、输出驱动回路、电源部分及故障诊断等硬件电路设计 ,对轮速传感器、电磁阀等的故障检测电路进行了设计。 本科生毕业设计 第 12 页 2.防 抱死制动系统基本原理 制动时汽车的运动 制动时汽车受力分析 汽车在制动的过程中主要受到地面给汽车的作用力