admin 管理员组文章数量: 887021
2024年1月4日发(作者:minwidth 400)
. . .
本科毕业论文
基于音乐的过滤式网络爬虫的研究
1 / 43
. . .
BACHELOR'S DEGREE THESIS
OF WUHANUNIVERSITY
Research of the web crawler based
onmusic website
By
June 2015
2 / 43
. . .
重声明
本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的容外,本学位论文的研究成果不包含他人享有著作权的容。对本论文所涉与的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。
本人签名: 日期: 2015.5.15
3 / 43
. . .
摘要
随着社会的进步与电脑的普与,网络逐渐取代了传统的信息平台,成为人们迅速获得和发布资讯的重要工具。在这一背景下,在线数字音乐服务因为其方便、快捷的特点受到大众的普遍欢迎。目前虽然数字音乐服务提供商众多,却同质化现象严重,跟不上部分用户的需求。互联网上的歌曲难以计数,然而用户想要找到自己喜欢的歌曲往往要花费大量的精力去搜索歌曲和浏览各种歌单。本文力求通过开发一个音乐,通过数据爬取与算法分析,使得人们找到自己喜欢的歌曲不再困难。该音乐采用B/S结构进行开发。使用python + tornado + mysql +redis搭建该系统。在软件工程相关规的约束下,结合实际情况对系统进行开发。
本文首先介绍了目前市面上的音乐电台存在的问题,并且介绍开发环境与开发者运用到的关键技术。之后对系统的一些关键技术进行研究和实现。
关键词:音乐电台;网络电台;B/S结构
4 / 43
. . .
ABSTRACT
As our society develops, computer is becoming more and more important
in our daily life , and Internetbecomes an important medium for people
to get the information quickly. In this context, because online digital
music service is convenient and fast, it is welcomed by the general public.
Although there are many digital music service providers, but they failed
to meet the demand of some of the users. The songs on the Internet are
difficult to count, however, that the user needs to spend a lot of energy
to search for songs and browse all kinds of playlist in order to find songs
they enjoy. This article seeks to develop a music website, so that users
can easily find their favorite songs. The music website uses B/S structure
to develop. Use python+tornado+mysql+redis to build the website system.
The whole system development process followed the software
engineeringrelated specification and the actual situation.
This paper first introduces the existing problems of the music websites,
and then introduces the development environment and the key technology
which the author uses. Then we studyand realize some keytechnologies of
the website system.
Key words: music radio ;Web crawler ;B/S structure
5 / 43
. . .
目录
1 绪论 .................................................. 9
1.1论文的选题的目的和意义....................................... 9
1.2国外关于该论题的研究现状和发展趋势........................... 9
1.3 论文主攻方向 ............................................... 10
1.4 论文的主要容 ............................................... 10
1.5 论文的研究方法和技术路线 ................................... 11
2 技术支持 ............................................. 12
2.1 python编程技术............................................. 12
2.2 json可拓展标记语言......................................... 12
2.3 tornado .................................................... 12
2.4 MySQL ...................................................... 13
2.5 Redis ...................................................... 14
2.6 Nginx ...................................................... 14
2.7前端技术.................................................... 15
2.8 MVC设计模式................................................ 16
2.9 网络爬虫 ................................................... 16
2.9.1 网络爬虫的分类 ........................................... 16
2.9.2 网络爬虫常见搜索策略 ..................................... 17
3 音乐概要设计 ......................................... 18
3.1 概述 ....................................................... 18
3.2需求分析.................................................... 18
3.2.1 面向人群 ................................................. 18
3.2.1 功能性需求 ............................................... 18
3.2.1.1 需求功能划分 ........................................... 18
3.2.1.2 功能描述 ............................................... 19
3.2.2 性能需求 ................................................. 19
3.2.3运行环境需求.............................................. 20
6 / 43
. . .
3.3 界面设计 ................................................... 20
3.3.1 技术手段 ................................................. 20
3.3.2 设计风格 ................................................. 20
3.3.3 界面设计方案 ............................................. 21
3.3.3.1 界面框架设计 ........................................... 21
3.3.3.2 启动封面设计 ........................................... 21
3.3.3.3按钮设计................................................ 21
3.3.3.4 标签设计 ............................................... 21
3.3.3.5 图标设计 ............................................... 21
3.4核心功能.................................................... 22
3.4.1 数据爬取功能 ............................................. 22
3.4.2 歌曲推荐功能 ............................................. 22
4 数据库设计 ........................................... 23
4.1 用户信息表 ................................................. 23
4.2 用户收听记录表 ............................................. 23
4.3 用户推荐记录表 ............................................. 24
5 系统介绍 ............................................. 25
5.1 网络爬虫的设计与实现 ....................................... 25
5.1.1 OAuth 2.0 协议 ........................................... 25
5.1.2 所提供的api接口 ................................. 26
5.1.3网络爬虫的需求分析........................................ 27
5.1.4 网络爬虫的结构与实现 ..................................... 27
5.1.4.1 数据爬取模块 ........................................... 28
5.1.4.2 容分析模块 ............................................. 28
5.1.4.3 数据处理模块 ........................................... 30
5.1.4.4 数据存储模块 ........................................... 30
5.2 功能模块的实现 ............................................. 31
5.2.1欢迎界面.................................................. 31
5.2.2 登陆界面 ................................................. 32
7 / 43
. . .
5.2.3 注册界面 ................................................. 33
5.2.4 授权界面 ................................................. 34
5.2.5 电台初始化界面 ........................................... 34
5.2.6 音乐播放界面 ............................................. 35
6 总结与展望 ........................................... 37
6.1 总结 ....................................................... 37
6.2 展望 ....................................................... 37
参考文献 ............................................... 38
致 ..................................................... 40
8 / 43
. . .
1 绪论
1.1论文的选题的目的和意义
随着社会的进步与电脑的普与,互联网成为人们快速获取传递信息的重要媒介。在这一背景下,在线数字音乐服务因为其方便、快捷的特点受到大众的普遍欢迎。目前虽然数字音乐服务提供商众多,却同质化现象严重,跟不上部分用户的需求。互联网上的歌曲难以计数,然而用户想要找到自己喜欢的歌曲往往要花费大量的精力去搜索歌曲和浏览各种歌单。例如豆瓣FM需要用户花费大量的时间来调试电台,让电台学习用户独特的口味;世面上已经有根据情绪来推荐歌曲的应用,比如和百度音乐,但是他们推荐的音乐和用户的喜好并没有关联,推荐的只是比较流行的音乐;另外诸如酷狗音乐, 音乐这些大型音乐收听平台,虽然乐库庞大,但是对音乐的分类粗糙,用户想要找到自己喜爱的音乐往往如同大海捞针一般艰难。对于一些喜欢花费时间享受音乐的用户而言,把时间浪费到自己并不感兴趣的曲目上会大大减小音乐带来的乐趣。
本音乐电台能根据用户自己的音乐喜好,来推荐相应的情绪音乐;音乐电台能够在知晓用户的音乐口味下,播放用户曾经喜欢的歌曲以与推荐用户有可能感兴趣的歌曲。用户同时可选择相应的情绪来收听情绪电台。本电台通过api爬取用户在上大量的收听记录,对用户的音乐口味更为准确,且几乎无需花费时间来学习用户口味;用户可以选择相应的情绪电台.
1.2国外关于该论题的研究现状和发展趋势
在欧美社会,数字音乐已经发展地相当成熟。因为互联网的普与极降低了数据流动的成本,以与音乐这种媒介非常容易被数字化的特征,音乐数据在互联网上被快速广泛得传播是必然的事情,相对于从传统的唱片店里购买CD,通过互联网搜索和下载音乐更加的快捷、经济和方便。目前在数字音乐领域,国外占主导地位的有以iTunes为代表的音乐搜索与下载模式,以多拉网络电台为代表的歌曲分类与个性推荐模式,和以为代表的社交音乐推荐模式。iTunes乐库丰富,用户通过搜索可以轻易地下载自己喜欢的歌曲,通过歌曲榜单和歌曲分类,用户可以探索自己可能感兴趣的音乐。多拉网络电台颠覆了以往的音乐电台9 / 43
. . .
模式,具体地讲这个电台其实就是一个针对用户高度定制的个性化电台。通过用户对所播放歌曲的反馈行为(喜爱或者讨厌)以与歌曲本身的一些属性,找到与之风格相似的的音乐,推荐给用户。与传统播放器不同的是,多拉网络电台没有音乐播放列表,用户无法选定下一首歌曲,这样一来用户可以专注于音乐本身,从而提供一种连续的音乐体验。的用户交互与多拉网络电台比较相似,不同的是为用户推荐歌曲的算法有所不同。多拉网络电台中每首音乐都有对应的风格、情绪等一系列属性,电台通过这些属性来推荐可能符合用户口味的歌曲。的设计思想则是,如果两个用户同时喜欢同一首歌曲或者一样的几首歌曲,那么用户A喜欢听的其它歌曲中有很大几率也符合用户B的口味,从而针对性的进行歌曲的推荐。
目前,国的音乐也如雨后春笋般层出不穷,老牌的音乐有酷狗音乐、 音乐等;还有对国外音乐的借鉴产品,例如豆瓣fm、虾米音乐等;在智能机日益普与的今天,也涌现出一大批移动端的音乐应用,例如天天动听,多米音乐等。但是目前国音乐缺乏原创性以与对的保护,大多数只是对国外同类的简单模仿。对于用户而言,很难满足一些个性化的需求,通常一个用户要找到一首符合自己口味的歌曲会花费大量的时间,难以体会到音乐带给人的愉悦和心灵上的享受。此外,国音乐同质化趋势严重,各大音乐没有自己的特色,仅仅在外观设计上有所区别,而容模块基本上小异,千篇一律的都是一些“推荐歌曲”,“音乐榜单”,“推荐歌单”,“分类乐库”等容,久而久之使得用户产生审美疲劳。在中国已成为世界网民最多国家的今天,数字音乐在我国有着巨大的发展空间。我们不应该仅仅满足于对国外技术的模仿,更应该自主创新,才能抓住这一巨大市场,在业竞争中取得优势地位。
1.3 论文主攻方向
本论文所研究的主要容是设计能够为用户提供个性化歌曲的音乐电台,对电台界面进行设计,开发针对个人的网络爬虫,并提高网络爬虫的性能。
1.4 论文的主要容
10 / 43
. . .
本文分为五章。
第一章绪论,介绍了本文的研究目的和意义,以与国外在此方面的研究现状,并说明了本文的研究容。
第二章开发环境与关键技术,介绍了音乐电台的开发的环境与关键技术,包括python编程技术、json可拓展标记语言、tornado、MySQL、Redis、Nginx服务器。
第三章为音乐概要设计,对进行了需求分析,界面设计以与一些总体上的把握。
第四章为数据库的设计。
第五章是网络爬虫的设计和实现与各模块的实现。
1.5 论文的研究方法和技术路线
本论文主要采用B/S的结构,使用python+tornado+mysql+redis的框架和技术来开发这个系统。
其中B/S结构就是浏览器/服务器结构,传统的客户端/服务器结构(C/S)有着客户端负担重的缺点,采用B/S架构的应用,客户端只需要有浏览器即可,极大的减少了客户端的负荷。而且B/S架构的应用界面也比C/S架构应用界面更加美观、大方。因此本系统采用的就是B/S结构。当然,C/S结构的应用也有它的优点,它的安全性更高,可能功能性也更加强大,但是本系统的功能已可以在B/S架构下实现,所以,B/S架构就是本系统的最适合的结构。Mysql是一个关系型数据库管理系统,它创建数据库非常简单,它占据了中小型企业Web开发数据库使用的大部分市场。即使是一些大型的企业,也有的会使用Mysql作为其web应用的数据库。Mysql数据库的优点是体积小,速度快,而且拥有成本极低。tornado框架是目前最流行的python Web应用开发框架,它强大的标签库以与精妙的架构设计无一不使得开发者开发程序变得轻松而富有创造性。
11 / 43
. . .
2 技术支持
2.1 python编程技术
在1989年圣诞节期间,著名的Guido van Rossum在圣诞节期间没有事情可做,为了打发时间,他编写了一门编程语言,这就是python。现在,全世界的编程语言五花八门,加起来有数百种,但其中的佼佼者大概有二十来种。而Python语言在最近的十年,一直能够屹立于TIOBE排行榜前十,所以这是一门十分优秀的编程语言。同样作为编程语言中的常青树,c语言和Python相比,更加的贴近硬件。因此,当程序员需要编写的程序对运行速度和性能的要求更加苛刻时,他们往往会偏向于使用C语言。而Python作为为编写应用程序而生的高级语言,它的基础代码库异常的丰富和繁杂,包括了文件、网络、数据库、文本、GUI等各式各样的容。所以通过Python来进行程序开发是一件非常简单的过程,因为有大量现成的代码可以使用,不需要程序员从头编写。总而言之,Python代码是简洁,优雅的代名词。有很多类型的应用都适合用python进行开发,比如一些网络应用,脚本任务等等。
2.2 json可拓展标记语言
JSON 是一种轻量级的数据交换格式,易于机器解析和生成,同时也方便人们阅读和编写。Json被用来储存和交换文本信息,和xml有着相似的功能。我们在javascript中不需要任何其它数据包就可以处理json数据,因为json是javascript的原生格式。Json的文本格式完全独立于语言,而且由于它的语言习惯和从语言家族类似,所以它常常被用来作为数据交换语言。与XML相比较,json的优势在于网络传输更加方便,但是却不够一目了然。
2.3 tornado
Tornado 是一个开源的网络服务器框架,该平台基于社交聚合 FriendFeed
的实时信息服务开发而来。它是 FriendFeed 使用的可扩展的非阻塞式 web 服务器与其相关工具的开源版本。这个 Web 框架看起来有些像 或者
Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架12 / 43
. . .
还包含了一些相关的有用工具和优化。
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。Tornado 是个轻量级框架,它的模块不多,最重要的一个模块是web,它就是包含了 Tornado 的大部分主要功能的 Web 框架。其它的模块都是工具性质的,以便让 web 模块更加有用.
2.4 MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL作为最流行的关系型数据库管理系统,在Web应用方面是最好的RDBMS(Relational Database Management System,关系数库管理系统)应用软件之一。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型的开发都选择MySQL作为的数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
由于自己开发只是一个小型的Web应用,这个应用仅仅涉与了五数据表,所以在开发的过程中采用了MySQL数据库。同时为了便于对于数据库数据进行管理,自己采用了MySQL workbench这一款数据库管理工具,只需要简单的配置,就能对MySQL数据库进行管理。
MySQL具备很多特性:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性;支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell
Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等;支持多线程,充分利用CPU资源;优化的SQL查询算法,有效地提高查询速度;既能够作为一个单独的应用程序应用在客户端服务器网络环境13 / 43
. . .
中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名;提供TCP/IP、ODBC和JDBC等多种数据库连接途径;提供用于管理、检查、优化数据库操作的管理工具;可以处理拥有上千万条记录的大型数据库。
MySQL提供很多种方法,其中JDBC就是一种很常用的Java数据库连接方法,它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
2.5 Redis
Redis是一个key-value存储系统。和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/pop、add/remove与取交集并集和差集与更丰富的操作,而且这些操作都是原子性的。Redis在很多方面与其他数据库解决方案不同:它使用存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非常独特,用的是单线程。另一个大区别在于,用户可以在开发环境中使用Redis的功能,但却不需要转到Redis。Redis能够替代memcached,让用户的缓存从只能存储数据变得能够更新数据,因此用户不再需要每次都重新生成数据了。
2.6 Nginx
Nginx 是一个高性能的 和反向代理服务器,也是一个
IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 可以在UNIX、GNU/Linux、BSD、Mac
OS X、Solaris,以与Microsoft Windows等操作系统中运行。Nginx 官方提供的各种功能模块应有尽有,结合这些模块可以完整各种各样的配置要求,例如:14 / 43
. . .
压缩、防盗链、集群、FastCGI、流媒体服务器、Memcached 支持、URL 重写等等,更关键的是 Nginx 拥有 Apache 和其他 服务器无法比拟的高性能。用户甚至可以在不改变原有的架构上,通过在前端引入 Nginx 来提升的访问速度。
2.7前端技术
CSS,即级联样式表,为网页设计和开发提供了一个全新的方法。通过 CSS,我们可以将使用 HTML(即超文本标记语言)创建的网页上显示的文本与用于描述如何显示和表示该文本(使用 CSS 进行定义)的信息完全分隔开。
CSS 旨在解决问题并帮助设计者节省时间,同时它还使设计人员能够以更多的方式设计网页外观。Css的应用非常地普遍,大多数网页都会使用css技术设计外观。举一个典型的示例:某些网页以特定的方式突出显示其。它们的颜色不同于该页上其他文本的颜色,并且将鼠标移动到这些上方时,它们的颜色会发生变化或者出现下划线。此操作就是通过 CSS 样式定义而不改动 HTML 代码来实现的。
Html(HyperText Markup Language),即超文本标记语言,它是以标准通用标记语言(SGML)为模板开发的下一代语言。准确的来说,html是一个规,一个标准,通过成对的标签,它规定了在网页(Page)中每一块该显示何种容,图片或者文字,以与其相应的排版格式。通常,html语言是会结合其他页面相关技术一起使用,以达到十分强大的界面显示效果。Html语言的标签库并不复杂,而且简单易学,随着时代的发展,它慢慢的由1.0版本过渡到5.0版本,其功能性、实用性得到不断的加强。它是基于web的应用开发的核心技术之一,虽然并不如其他技术一般复杂,但是其重要性却是许多web开发技术所不能比拟的。
Jquery是一个十分优秀的轻量级javascript库,所谓javascript库,就是说它是基于javascript语言开发的,部实现了许多重要、常用的功能的方法的一个集合。它的目的是为了使开发人员在实现网页交互或者说前后台交互中更加方便易行,它的核心是简单、易用,代码量少。Jquery功能强大,可以简单的操作document对象,制作动画效果,易于进行事件处理,其中,特别重要的一点是,它的为Ajax功能的使用提供了十分简单方便的接口,极大的减少了与15 / 43
. . .
后台交互并局部更新的代码量。通过Jquery的Api,开发者们对于的开发可以更加具有创造性。
2.8 MVC设计模式
MVC,即Model(模型)、View(视图)、Controller(控制器)。在MVC框架出现之前,java web开发者经历了Model 1 与Model 2 开发时代。
早期的web应用都是静态页面,没有动态的显示效果,也无法动态的与用户进行交互。
MVC框架采用分层的思想,将web应用开发分为三层来分别开发,这不仅使得开发的目标变得更加明确也使得各层之间的耦合度得到降低,因此,降低了后期再次开发的成本,便于维护,可扩展性较强。然而,MVC框架并不总是好的,对于开发大型项目来说,自然采用MVC框架能够极大的提高工作效率,降低后期维护的成本,但是对于一些小型的Web项目来说,本身功能比较简单,若采用MVC框架,则会将一些简单的代码分割成复杂的三层,既增加了代码的复杂度,也降低了代码编写的效率,并且小型web项目的维护也不像大型项目那么频繁,所以,Model 1模式在小型项目中也是有用武之地的。
2.9 网络爬虫
2.9.1网络爬虫的分类
网络爬虫通过技术和功能等不同角度有很多种分类。基于整个web的网络爬虫:简称全网爬虫,是最基本的网络爬虫。这种网络爬虫指从某一个或某几个初始种子 URL开始,对整个web的资源不断进行爬取和分析,直到满足一定的停止条件。这种网络爬虫消耗的资源非常大,需要抓取的页面非常多,所以一般被用来为搜索引擎和大型网络容提供商提供数据采集服务;基于主题的网络爬虫(也被称作聚集型网络爬虫):这种网络爬虫会定义一个主题围,然后有选择性的爬取相关页面。区别于全网爬虫不加甄别的进行页面爬取,聚集型网络爬虫需要爬取的页面少,对于网络和硬件资源的消耗也大为减少,可以在容方面得到更快的更新,满足人们对特定信息的需要。为了进行主题甄别,聚集型网络爬虫增16 / 43
. . .
加了两个模块,一个是评价模块,另一个是容评价模块。通过对页面容和的重要性进行计算,来决定的访问顺序。聚焦爬虫爬行策略实现的关键是评价页面容和的重要性,不同的方法计算出的重要性不同,由此导致的访问顺序也不同;增量式网络爬虫:爬取的是新增的和发生变化的页面数据。传统的网络爬虫在根据自己的设定爬取一定的数据后就会停止对数据的继续抓取,在一定的周期以后,重新进行一轮数据抓取以替代以前的过时的数据。但是这样做会爬取大量的重复资源,在时间和资源上的浪费比较大。增量式网络爬虫则较好地解决了这个问题,减少了重复和浪费。但是为了实现这种数据抓取方式,需要更高的算法复杂度和技术难度;其它类型的网络爬虫:在现实应用中,为了提高性能或者满足用户个性化需要,衍生出了一些其它类型的网络爬虫。例如,基于用户个性化的网络爬虫:这种爬虫根据用户的兴趣过通过与用户的交互来为用户提供个性化的数据信息,不同用户搜索同一个关键词会返回不同的结果;基于元搜索的网络爬虫:把用户提交的关键字提交到多个搜索引擎,然后在分析整合所得结果后,再把容返回给用户。
2.9.2 网络爬虫常见搜索策略
由于工作量巨大,所以全网爬虫通常会采用一些爬行策略来提高效率。常见的策略有如下三种:深度优先策略,核心思想是访问被搜索结构的叶子节点。从初始的页面开始,进行深度优先的搜索,不断访问下一级,直到不能继续深入为止。因此只有当爬虫爬完一个分支后才可以爬取其它分支。深度优先搜索策略的优点在于,对于深层嵌套的容,可以被尽可能的遍历。但是这种策略也有先天不足,即如果某形成一个死循环的话,这种爬行策略会做大量无用功,造成大量的资源损失。广度优先策略,这种搜索策略首先会将当前页面的所有超搜索完成后,才会进行下一层页面的爬行。广度优先策略避免了深度优先策略的死循环问题,而且储存比较方便,不需要消耗大量空间对中间节点进行储存。但是这种搜索策略需要耗费一定时间来访问到较深层的页面,而且有很大可能会遗漏一些比较孤立的信息页面。IP地址搜索策略,网络爬虫被赋予一个种子IP地址,继而对这个初始的地址段后的每个www地址中的文档进行遍历。并且忽略文档文件中指向其他站点的地址。这种搜索策略只对于比较小规模的搜索比较适合,可以发现一些较少被引用的页面的信息。
17 / 43
. . .
3 音乐概要设计
3.1 概述
本章主要从需求分析,界面设计和核心功能等三个方面对系统的设计进行了讨论。系统设计阶段是软件开发过程中极其重要的阶段,因为它决定了软件开发后续工作的方向,方向选择方面如果出现错误,将对软件开发工作造成致命性打击。在这一阶段,需要开发者从全局的角度进行思考,对系统的整体框架进行讨论和设计。
3.2需求分析
用户永远是互联网产品的根本,没有用户的产品也就失去了意义。所以评价一个互联网产品的标准,最重要的就是它是否满足了用户的需求。进行需求分析时,首先要明确产品的目标人群,否则需求分析也就无从讨论了。在需求分析阶段,我们需要进行大量的调研,编写许多的功能需求文档,对其可行性做出评估,确立产品需要实现的功能,为后续的开发工作打下稳定的基石。
3.2.1 面向人群
应当指出,本音乐电台是为了区别于市面上大多数音乐软件而进行开发的。开发的目的在于能够提供一些市面上同类产品无法做到或者缺失的用户功能,即根据用户的情绪提供个性化的歌曲。一般对于此种功能有要求的用户,都是追求极致的音乐发烧友或者对美和艺术有着较高要求的人群。这就对我们音乐电台的歌曲推荐功能和界面设计方面提出了更高的要求。
3.2.1 功能性需求
3.2.1.1 需求功能划分
目前市面上音乐软件、音乐可以说是鳞次栉比,但遗憾的是,这些音乐产品都没有自己的特色,流于俗套。大多数只是互相模仿和对国外技术的照搬,同质化趋势严重,忽视了一些用户群体的需要。通过我们对音乐的调研,发现市面上的音乐产品存在着以下几点缺陷:需要较长的时间才能适应用户的口味,不能根18 / 43
. . .
据用户的情绪来进行歌曲推荐,歌曲分类过于复杂,需找自己喜欢的音乐往往非常令人厌倦。据此我们开发出的电台主要划分为以下几个功能模块:情绪电台切换,歌曲播放控制,歌曲收藏,音乐展示以与用户管理。
3.2.1.2 功能描述
音乐展示:在播放歌曲时通过图形界面为用户展示相关信息。一方面可以为用户展示出歌曲专辑信息、演唱者信息、播放进度、所处情绪电台信息,另一方面也可以为用户带来视觉上美的享受。
歌曲播放控制:这是音乐电台最基本的交互功能。本电台以简单、省心为出发点,只为用户提供了三个播放控制交互,分别是播放/暂停,随机播放,下一首。
收藏:作为一个针对用户的个性化电台,收藏功能当然是必不可少的。当用户对当前播放的歌曲非常喜欢时,可以通过点击右下方的红心按钮进行收藏。
用户管理:本电台之所以可以几乎不用花费时间来适应用户的口味,在于电台可以通过用户在上收听歌曲的记录来分析出用户的喜好。使用本电台,需要从该模块登陆。本电台获取到访问用户在的个人数据的权限后,通过提供的api接口来爬取用户的个人数据。
情绪电台选择:本电台从功能上讲是一种情绪电台。它的核心功能就是给用户推荐适合用户当前情绪下收听的同时也适合用户口味的歌曲。它可以通过一些算法计算当前应该播放的电台的情绪,也可以通过用户点击情绪模块中的up、down、low、high几个情绪分类来自行决定要收听哪类情绪电台。
3.2.2 性能需求
流畅性:通过优化代码逻辑,界面逻辑和系统逻辑,提高系统的反应速度,优化系统的性能,使得用户体验更加流畅。
稳定性:通过代码的设计和系统的测试,来尽量消除系统存在的bug,增强系统的容错能力,从而提高用户体验。
易用性:实现设计的功能,满足产品面向人群的需求,减少不必要的冗繁操作,让用户使用起来更加的方便、简单。
可维护性:软件开发不是一件一劳永逸的事。再高明的设计也往往会存在一19 / 43
. . .
些意想不到的缺陷,或者有须要提升的空间。所以系统的设计应该为以后的维护提供便利,紧跟先进的技术和理念,不断对系统进行更新换代。
3.2.3运行环境需求
本系统基于mvc设计模式,采用了简洁流行的Python编程语言,利用tornado框架,使用MySQL+Redis组成的高性能数据库,进行系统的开发。
操作系统要求:windows xp以上,Mac OS,Linux。
编程工具:Sublime Text2
服务器需求:tornado web端服务器。
数据库:MySQL;Redis。
3.3 界面设计
3.3.1 技术手段
本的前台采用了目前最流行的CSS+ HTML5+JSP技术,界面美观大方,代码逻辑清晰。
3.3.2 设计风格
简约:极简的设计风格是一种趋势。在这个越来越快节奏的现代社会,人们穿梭在钢筋水泥之中,疲惫不堪。我们需要一个去伪存真,简单纯净的地方来休憩心灵。例如ios从拟物化的设计到扁平化的设计,其实就是一个去除纷繁的细节,突出本质的过程。
沉浸式:通过复杂的算法和简洁的交互,让用户无需花费精力进行冗杂的播放控制,用户可以全身心的投入到音乐的世界中,得到流畅的、沉浸式的音乐体验。
统一性:不同界面之间有着统一的色彩与布局设计,整个音乐带给用户一种一致的视觉体验。同一个界面之中不同模块与动画过度效果具有一致的设计,不会带给用户分裂的感觉。
20 / 43
. . .
3.3.3 界面设计方案
3.3.3.1 软件框架设计
本电台的框架设计遵从简洁至上的原则。在主要播放界面,绝大部分面积分配给电台图像展示模块。电台占据了屏幕左侧和中间的位置。不同情绪的电台,会配上相应的一些唯美图像。当用户在欣赏歌曲时,会在不经意间被这些图像吸引,陷入光和影的无限遐想之中。右侧从上到下依次为专辑信息展示,歌曲播放控件,收藏按钮。用户所需的交互只在一个界面就可以完成。
3.3.3.2 软件启动封面设计
一个软件的启动界面是非常重要的,因为用户的第一影响往往就来自启动界面。本电台启动界面采取的封面是一典雅的高清晰度的老式收音机与一台笔记本电脑组合的图像,满含怀旧的音乐风情又不失现代的科技感。位于界面中部偏上是本电台的图标,中下部是一枚精致的开启电台的按钮。精心的图形设计和美丽的动画效果非常打动人心,给人以美的感受。
3.3.3.3软件按钮设计
软件的按钮设计借鉴了目前流行的扁平化设计。不同于拟物化设计,扁平化的设计能起到减轻视觉负担的作用。大脑在处理扁平抽象的图形时,会把注意力集中到图形本身的功能上来,而不会去太多处理图像细节,这样一来,起到了给人减压放松的心里效果。本电台的按钮设计具有丰富的动态效果,例如静态效果、点击效果、鼠标放在上面未点击的效果、独立变化效果等等,是一套精致美丽的系统。
3.3.3.4 标签设计
本电台去掉了繁琐的标签。一方面是为了提高界面的美观和简洁,另一方面也是因为本电台力现一键式收听体验,将复杂性隐藏在后台之中,简化去掉了一些繁琐的功能和设置项。
3.3.3.5 图标设计
对于一个互联网产品来说,图标的设计是非常重要的。一个美观的图标会21 / 43
. . .
大大提高用户的观感和喜爱程度。前一段时间很火的锤子系统,它最为人称道的一个特点就是针对市面上的安卓应用,尽量为每一个应用设计一个美观的图标,这使得它的界面与其他系统相比有了很大的提升。本电台名为”mizar”,图标使用银白色半透明字体,给人以纯洁,干净的感觉,在暗色调背景的衬托下,更有一种出淤泥而不染的格调。
3.4核心功能
3.4.1数据爬取功能
本电台通过上提供的开放的API接口,从 上爬取用户收听的歌曲信息,通过一系列的分析和组织,转化为程序需要的容和样式,存储在数据库中。
3.4.2 歌曲推荐功能
爬虫爬取的数据,会保存到两表中,一是用户收听记录,另一是推荐歌曲列表。根据这两表中的歌曲标签信息,程序会通过一定的算法,得到一个推荐歌曲的播放队列。在歌曲的播放过程中,程序会记录用户的歌曲切换次数。当切换次数达到一定的阈值后,程序将会改变推荐歌曲的风格,更新歌曲的播放队列。
22 / 43
. . .
4 数据库设计
本电台需要将爬虫获取的信息有效存储在数据库中,这部分信息包括两部分,一个是用户收听歌曲记录,另一个是推荐歌曲列表。
通过上文的分析,结合实际情况,本系统在服务器端采用mysql数据库,设计创建以下三表:
4.1 用户信息表
这表用来记录和用户相关的一些数据,例如ID,名字,安全码,注册时间,账户有效性等。如下表4-1所示
表4-1用户信息表
字段名称
user_id
name
session_key
register_time
is_valid
数据类型
数字
文本
文本
文本
数字
说明
用户ID
用户名字
用户安全码
注册时间
用户数据有效性
4.2 用户收听记录表
这表是从上爬取的用户听过的歌曲的基本信息。包括歌曲编号、用户ID、推荐歌曲名称、歌曲星级以与是否红心如下表4-2所示
表4-2 用户收听记录表
字段名称 数据类型 说明
User_track_ID 数字 歌曲编号
User_id 数字 用户ID
Track_uuid 文本 推荐歌曲名称
Level 数字 歌曲星级
Is_star 数字 是否红心
23 / 43
. . .
4.3 用户推荐记录表
这表记录了向用户推荐的歌曲的信息。包括已听歌曲编号、用户ID、推荐歌曲名称、推荐歌曲类型和推荐歌曲来源。如下表4-3所示
表4-3 用户推荐记录表
字段名称 数据类型 说明
User_track_id 数字 已听歌曲编号
User_id 文本 用户ID
Track_uuid 文本 推荐歌曲名称
Source_type 文本 推荐歌曲类型
source 文本 推荐歌曲来源
24 / 43
. . .
5 系统介绍
5.1 网络爬虫的设计与实现
5.1.1 OAuth 2.0 协议
OAuth 被人们视为一个开放协议,通过OAuth协议,第三方可以访问用户在某站点的隐私数据,而且不需要获得用户密码。用户也可以有选择性的授权给第三方访问不同数据的权利,可以选择哪些数据允许第三方访问,哪些数据不允许第三方访问。OAuth 协议目前有两版,相对于旧的版本而言,新的OAuth协议(即OAuth 2.0)对于开发者而言更为易用。虽然整体的架构一样,但是新版本并不对旧版本协议兼容。在OAuth 2.0风靡的当下,越来越多的服务商把自己提供的服务封装成各种api接口,这便是OpenAPI技术的由来。随着互联网技术的发展,OpenAPI将会越来越流行,越来越多的互联网企业通过OpenAPI来对客户提供服务会是以后一段时间的发展趋势。例如新浪微博通过OAuth 2.0对第三方授权的流程如图4-2所示
图5-1 OAuth 2.0的应用举例
25 / 43
. . .
5.1.2 所提供的api接口
在我们对的 API 接口进行介绍之前,先让我们对api接口进行一个简要的说明:API 的中文意思是应用程序接口,我们如果想让计算机程序之间实现通讯,可以通过API接口来进行。至于通讯具体是怎么进行的,是不需要我们考虑的。因此API接口部结构对于程序员来说是一个黑箱。这样做的一个好处是,程序员可以直接调用API函数,使用API接口提供的功能,不需要关心里面的细节。这样一来,可以大大削减编程的工作量,而且也能够使得编写无用程序的几率大大降低。此外,使用api的另一个好处是,它可以为不同的操作系统提供数据共享。由于api接口所能带来的种种好处,现在许多服务型都会把自己所提供的服务封装成api接口,供开发者进行使用。现在许多大型网络容提供商都开放了一些api接口,例如淘宝开放平台,百度地图api,微博api,豆瓣api等等。本文笔者所使用的是提供的api接口。其中部分的接口如图5-2所示
图5-2部分API接口
定义好了这些接口,然后把它们提供给开发人员使用,通过这种方式,我们可以非常轻松地获取到各类需要的数据。Api接口的提供对于开发人员和容服务提供商都是有好处的。程序员通过调用这些接口减少了代码量,使得程序更加简洁,缩减了工作量。同时,它也有效地减少了服务器的负担,简化了查询的流程。通过这些api进行数据检索的请求后,我们得到的返回结果通常是26 / 43
. . .
JSON或XML类型的数据。
5.1.3网络爬虫的需求分析
通过提供的API接口,我们可以从上获取大量用户收听过的歌曲信息,这些信息是以json的格式返回给开发者的。所以我们必须对这些数据进行分析,将这些通过API接口获取到的信息转换为我们能够方便使用的数据模式,进而讲这些与歌曲相关联的信息储存到数据库中。然后根据数据库中歌曲的相关信息,设计一套歌曲推荐算法,从而实现本电台的核心功能,即为用户推荐他可能会喜欢的歌曲。
本论文研究和讨论的重点在于网络爬虫的设计和实现,歌曲推荐算法不是本论文所要讨论的容。通过上文的分析和讨论,该网络爬虫所做的工作是,通过API接口爬取相关歌曲信息,对封装这些信息的json格式数据进行分析和转换等处理工作,并把处理后的信息储存到MySQL之中。在对传统网络爬虫的研究的基础上,我们针对提供的API抓取的特定网络爬虫包括以下几个模块:数据爬取模块、容分析模块、数据处理模块以与数据储存模块。这些功能模块组成如图5-3所示
Internet
API接口
数据储存模块
图5-3 功能模块关系
5.1.4 网络爬虫的结构与实现
27 / 43
数据爬取模块 数据分析模块
数据处理模块
. . .
5.1.4.1 数据爬取模块
该模块的功能是用于向特定的上的API 接口发送请求,并得到返回的数据。其中部分代码示例如下:
获得已经听过的歌
def get_own_library(username): all_temp_tracks = _gevent_task(
20, ALL_PAGE_NUMBER, last__top_tracks, TOP_RATIO)
recent_temp_tracks = _gevent_task(
50, RECENT_PAGE_NUMBER, last__recent_tracks,
RECENT_RATIO)
loved_temp_tracks = _gevent_task(
50, LOVED_PAGE_NUMBER, last__loved_tracks,
LOVED_RATIO)
final_tracks_list = trackList_(
all_temp_tracks, recent_temp_tracks, loved_temp_tracks)
trackList__track_level(username, final_tracks_list)
得到推荐的歌
def get_recommendation(username):
all_top_tracks = get_top_tracks(username)
rec_artists = last__rec_artists(username)
rec_artists_tracks = get_rec_artists_tracks(rec_artists)
user_top_tracks = track__user_top_tracks(username)
rec_similar_tracks = get_rec_similar_tracks(user_top_tracks,
all_top_tracks)
lib_artists = last__user_top_artists(username)
user_top_artists_tracks = get_user_top_artists_tracks(lib_artists,
all_top_tracks)
rec_tracks = rec_artists_tracks + rec_similar_tracks +
user_top_artists_tracks
trackList__to_db(username, rec_tracks)
5.1.4.2容分析模块
顾名思义,这个模块的作用是对API接口返回的数据进行识别和分析的。
提供的API接口会给开发者返回一组json格式的数据。Json格式28 / 43
. . .
的数据使用了和某些高级语言相类似的语法习惯,而且它是javascript语言中的数组与对象,所以用作数据交换语言json具有天然优势。通过数组和对象,我们可以构建出非常复杂的数据结构。在json中,对象是被“{}”括起来的容,数组是被“[]”括起来的容。对象的数据结构用如下形式表示:{属性:属性值,属性:属性值,…}其中属性值可以是数组、字符串、对象、数字等。数组的数据结构用如下形式表示[“字段”,”字段”,…],类似的,字段的取值也可以是数组、字符串、对象、数字等几种。通过这两种结构的嵌套使用,我们可以构造和表示许多复杂的数据类型。例如,当我们调用中的Tracks接口时,会返回如图5-4所示的json数据
图5-4 部分json数据截图
图示数据只是返回的数据的一部分,因为数据量比较大,无法完全展示。
类似这些数据,在经过容分析模块处理后,转化为类TrackList,TrackList类中的属性囊括了通过API接口获得的歌曲的各种有效信息例如歌曲风格,歌曲作者,歌曲播放次数,用户是否收藏过等等一些相关信息,这些信息将会为下一步的数据分析做好铺垫。
29 / 43
. . .
5.1.4.3数据处理模块
数据处理模块是基于提供的API进行歌曲信息抓取的网络爬虫的重要的一个模块。通过这个模块,我们可以过滤掉通过API爬取的歌曲的许多无关信息,把歌曲信息以一个适合推荐算法工作的形式整理归类。通过数据处理模块,我们将TrackList类中的歌曲分为两大类,一类是用户收听过的歌曲类TempTrack,另一类是推荐给用户的歌曲类RateTrack,与TrackList不同之处在于,后面两个类去掉了一些与歌曲推荐算法无关的属性,并且添加了一些属性,例如rate属性。Rate属性可以理解为歌曲的推荐等级,当用户点击下一曲时,推荐等级是决定是否播放这首歌的重要指标之一。
5.1.4.4数据存储模块
数据储存自然是必不可少的模块。在我们完成对歌曲信息的爬取,对歌曲信息的分析,对歌曲信息的过滤处理和分类后,需要将这些数据经过一定的操作,转化为MySQL数据库中的条目,以便程序对歌曲信息进行检索或者挖掘其中的数据。
通过上文的分析与研究,我们需要在MySQL中建立三表来储存用户数据。这三表分别是用户信息表(如图5-5),用户收听记录表(如图5-6), 用户推荐记录表(如图5-7)
图5-5 用户信息表
30 / 43
. . .
图5-6
用户收听记录表
图5-7 用户推荐记录表
5.2 功能模块的实现
根据前文的设计方案,本界面的图形界面分为登陆界面和歌曲收听界面两大板块。
5.2.1欢迎界面
该界面由左右两部分组成,如图5-8,左边是对电台的简介,右边是带有开启电台按钮的装饰性界面。按下开启电台的按钮后会跳转到的登陆界面,提供登陆功能。
31 / 43
. . .
5-8 欢迎界面
5.2.2 登陆界面
如图5-9所示,就是的登陆界面,由顶部操作栏,中部表单填写栏和底部说明文字组成。如果用户输入了正确的账号名称和密码,则会跳转到电台初始化界面。
32 / 43
. . .
图5-9 登陆界面
5.2.3 注册界面
如果用户没有的账号,那么点击加入按钮则可跳转到如下图5-10所示的界面进行账号注册。用户需要输入用户名、电子地址并设置自己的密码。点击提交注册的按钮后,用户会收到一封确认,点击确认中的激活后,账号创建成功。
图5-10 账号注册
33 / 43
. . .
5.2.4 授权界面
本电台作为一个第三方,需要获取用户在上的个人信息。下图为用户个人信息访问的授权界面。只有在用户同意以后,本电台才能访问用户的个人数据,爬取用户的歌曲收听记录,从而对用户提供个性化的歌曲推荐服务。授权界面如图5-11所示
图5-11 授权界面
5.2.5电台初始化界面
当用户第一次通过本电台成功登陆后,系统将进行初始化。初始化过程中,系统将会爬取用户个人数据,对这些数据进行分析处理,对推荐歌曲的推荐度进行计算。在稍作几分钟的等待后,电台的初始化完毕,界面将跳转到歌曲播放界面,一场音乐发现之旅即将展开。电台初始化界面如图5-12所示
34 / 43
. . .
电台初始化界面5-12
5.2.6 音乐播放界面
经过前面一系列的操作之后,最终来到本电台最主要的音乐播放界面。如图5-13所示,
图5-13 音乐播放界面
左侧区域代表着当前所处的情绪电台。不同的情绪电台对应着不同风格的插图。右侧从上到下分别为歌曲播放控制模块、歌曲信息展示模块和收藏功能按钮。值35 / 43
. . .
得注意的是,播放控制中的随机播放按钮只是一种伪随机:点击随机播放按钮后,上下两首歌曲的情绪风格将会有比较大的变化,而在正常播放模式下上下两首歌曲的情绪风格是相近的,只是会按照一定的算法渐变。
36 / 43
. . .
6 总结与展望
6.1 总结
本文以开发出一个情绪化推荐式音乐电台为出发点,从各个方面介绍了开发一个具体的基于B/S结构的音乐所需的详细容。详细介绍了当前流行的应用开发的技术,并尝试分析了各个关键技术如网络爬虫、MySQL、mvc等技术的工作原理。该系统实现了对数据的爬取和过滤,和歌曲推荐算法的设计与编写。本论文主要侧重于对网络爬虫相关技术的研究与实现,并简要介绍了音乐电台的界面设计、特点和主要功能。
通过系统的测试,该音乐电台具有操作简便、歌曲推荐准确的特点。但由于时间紧任务重,测试环境和实际运行环境的差异性,所以还不能准确找出系统存在的所有问题,还需在后期的维护过程中不断完善更新系统。相信该平台会成为以后一个很好地研究起点。
6.2 展望
随着社会的进步与电脑的普与,互联网成为人们快速获取、发布和传递信息的重要媒介。在这一背景下,数字音乐正在逐渐取代传统的cd店,成为人们获取音乐的主要途径。在这一背景下,开发出针对不同用户提供个性化服务的音乐有着广阔的发展空间。
37 / 43
. . .
参考文献
[1]宋绍云.基于校园网的多媒体网络辅助教学研究.师学院学报,2002(5)
[2]玉.基于Web的计算机辅助教学系统.电子工程师报,2001(2)
[3]园林.基于Internet的网上辅助教学系统的设计.微机发展,2003(7)
[4]汪.基于Web的多媒体辅助教学系统.微机发展,2003(9)
[5]宋汗增.利用Hibernate对象持久化服务简化java数据库访问[J].计算机应用,2003(12).
[6]天河等著.Hibernate项目开发宝典一一宝典丛书.电子工业.2006
[7]卫琴.精通Struts:基于MVC的JavaWeb设计与开发.电子工业.2004.
[8]广鑫编著.《JAVA企业级开发项目实践》第一版.清华大学出版,2004.
[9]卫琴等.Tomcat与JavaWeb开发技术详解.电子工业.2004
[10]立功,著.MySQL程序设计与数据库管理.科学.2001
[11]卢湘江等著.MySQL高级配置和管理.清华大学.2001
[12] 王诚梅等.JSP案例开发集锦[M].:电子工业,2005年
[13] 王沛等.征服Ajax Web 2.0开发技术详解[M].:人民邮电,2006年
[14] Nicholas 等.Ajax高级程序设计[M].:人民邮电,2006年
[15] 火旺等.Web设计原理与编程技术[M].:中南大学,2005年
[16] 王俊伟等.SQL Server 2000中文版数据库管理与应用[M].:清华大学,2007年
[17] 朴美贞等.魅力十足Photoshop CS2创意设计实例精选[M].:人民邮电,2006年
[18] 黄斯伟等.动态网页制作HTML 4.0使用详解[M].:人民邮电,2000年
[19] 金鼎图书工作室.Flash MX 2004网络动画设计师特训班[M].:电子音像出版中心,2004年
[20]董纪英.SQLite、MySQL、PostgreSQL关系型数据库管理系统比较[J].电脑编程技巧与维护,2014(14)
[21]宋君,家爱.Struts2框架工作原理与应用体会[J].产业与科技论坛,38 / 43
. . .
2012(06):243~244
[22]惠茹,晓东,任刚. Hibernate对象持久化技术的研究[J].电脑知识与技术,2011(19):4733~4734
[23]登道,娜. 关于数据表中字段属性"NULL"的理解与使用[J].计算机应用与软件,2004(12)
[24]宋君,家爱.Struts2框架工作原理与应用体会[J].产业与科技论坛,2012(06):243~244
[25]Gireesh Kumar P .Active Server Pages: Technology for Creating Dynamic
Web Pages and Webenabled Databases.Documentation Research and Training
Centre.26th-28th February.2001.0652-2569
[26].ACCESS database applications.February.1999.0685-2657
39 / 43
. . .
致
经过几个月的艰苦奋斗,论文工作终于进入了尾声,首先我要感学院的栽培之恩,在愉快的大学生涯里,我在亲爱的学到了很多有用的知识,给我们提供了一个美丽良好的学习环境,让我们不断成长,不断超越自我,也让我们意识到自身在很多方面的不足,在今后的学习与生活之中,我会更加努力,不断叩响知识的大门,学习更多更实用的知识,成为国家的栋梁之才!
接下来,我要特别感我的指导老师--,没有他的悉心指导,我的毕业论文不可能如此顺利的完成。从一开始的立项、选题、毕业设计的思想、系统设计、理论的形成以与最终的定稿,都和老师的辛勤指导分不开。老师治学严谨、为人师表、认真负责,是一位不折不扣的好老师,为我们营造出良好的求学氛围。在老师的指导带领下,我展开一个全新的视角思考本系统的设计实现,教会了我设计系统的基本思想与方法。在我论文即将完成之际,表达我对老师的衷心的感和崇高的敬意!
当然,我还要感那些曾经帮助过我的同学们,毕业设计没有他们的无私帮助也是无法完成的,不断帮助我完善,不断鞭策,才有最后软件的成功完成。
!
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作与取得的成果。尽我所知,除文中特别加以标注和致的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得与其它教育机构的学位或学历而使用过的材40 / 43
. . .
料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了意。
作 者 签 名: 日 期:
指导教师签名: 日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部容。
作者签名: 日 期:
学位论文原创性声明
本人重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
作者签名: 日期: 年 月 日
41 / 43
. . .
学位论文使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名: 日期: 年 月 日
导师签名: 日期: 年 月 日
注意事项
1.设计(论文)的容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:引言(或绪论)、正文、结论
7)参考文献
8)致
9)附录(对论文支持必要时)
2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
42 / 43
. . .
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体与大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
43 / 43
版权声明:本文标题:基于音乐网站的过滤式网络爬虫的研究毕业论文 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1704361509h456165.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论