《基于音乐网站的过滤式网络爬虫的研究毕业论文(33页).doc》由会员分享,可在线阅读,更多相关《基于音乐网站的过滤式网络爬虫的研究毕业论文(33页).doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于音乐网站的过滤式网络爬虫的研究毕业论文-第 33 页学号 密级_本科毕业论文基于音乐网站的过滤式网络爬虫的研究院(系)名称:专业名称:软件工程学生姓名:指导教师:二一五年六月BACHELORS DEGREE THESIS OF WUHAN UNIVERSITYResearch of the web crawler based on music websiteByJune 2015郑重声明本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工
2、作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。本人签名: 日期: 2015.5.15 摘要随着社会的进步与电脑的普及,网络逐渐取代了传统的信息平台,成为人们迅速获得和发布资讯的重要工具。在这一背景下,在线数字音乐服务因为其方便、快捷的特点受到大众的普遍欢迎。目前虽然数字音乐服务提供商众多,却同质化现象严重,跟不上部分用户的需求。互联网上的歌曲难以计数,然而用户想要找到自己喜欢的歌曲往往要花费大量的精力去搜索歌曲和浏览各种歌单。本文力求通过开发一个音乐网站,通过数据爬取与算法分析,使得人们找到自己喜欢的歌曲不再困难。该音乐网站采用B/S结构进行开发。
3、使用python + tornado + mysql +redis搭建该网站系统。在软件工程相关规范的约束下,结合实际情况对系统进行开发。 本文首先介绍了目前市面上的音乐电台存在的问题,并且介绍开发环境及开发者运用到的关键技术。之后对网站系统的一些关键技术进行研究和实现。关键词:音乐电台;网络电台;B/S结构ABSTRACTAs our society develops, computer is becoming more and more important in our daily life , and Internet becomes an important medium for pe
4、ople 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 di
5、fficult 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 d
6、evelop. Use python+tornado+mysql+redis to build the website system. The whole system development process followed the software engineering related specification and the actual situation.This paper first introduces the existing problems of the music websites, and then introduces the development envir
7、onment 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目录1 绪论91.1论文的选题的目的和意义91.2国内外关于该论题的研究现状和发展趋势91.3 论文主攻方向101.4 论文的主要内容111.5 论文的研究方法和技术路线112 技术支持122.1 python编程技术122.2 json可拓展标记语言122
8、.3 tornado122.4 MySQL132.5 Redis142.6 Nginx142.7前端技术152.8 MVC设计模式162.9 网络爬虫16 2.9.1 网络爬虫的分类16 2.9.2 网络爬虫常见搜索策略173 音乐网站概要设计193.1 概述193.2需求分析19 3.2.1 面向人群19 3.2.1 功能性需求19 3.2.1.1 需求功能划分19 3.2.1.2 功能描述20 3.2.2 性能需求20 3.2.3运行环境需求213.3 界面设计21 3.3.1 技术手段21 3.3.2 设计风格21 3.3.3 界面设计方案22 3.3.3.1 界面框架设计22 3.3.
9、3.2 启动封面设计22 3.3.3.3 按钮设计22 3.3.3.4 标签设计22 3.3.3.5 图标设计223.4核心功能23 3.4.1 数据爬取功能23 3.4.2 歌曲推荐功能234 数据库设计244.1 用户信息表244.2 用户收听记录表244.3 用户推荐记录表255 系统介绍265.1 网络爬虫的设计与实现26 5.1.1 OAuth 2.0 协议26 5.1.2 last.fm 所提供的api接口27 5.1.3 网络爬虫的需求分析28 5.1.4 网络爬虫的结构与实现29 5.1.4.1 数据爬取模块29 5.1.4.2 内容分析模块29 5.1.4.3 数据处理模块3
10、1 5.1.4.4 数据存储模块315.2 功能模块的实现32 5.2.1 欢迎界面32 5.2.2 登陆界面33 5.2.3 注册界面34 5.2.4 授权界面35 5.2.5 电台初始化界面35 5.2.6 音乐播放界面366 总结与展望386.1 总结386.2 展望38参考文献39致谢411 绪论1.1论文的选题的目的和意义随着社会的进步与电脑的普及,互联网成为人们快速获取传递信息的重要媒介。在这一背景下,在线数字音乐服务因为其方便、快捷的特点受到大众的普遍欢迎。目前虽然数字音乐服务提供商众多,却同质化现象严重,跟不上部分用户的需求。互联网上的歌曲难以计数,然而用户想要找到自己喜欢的歌
11、曲往往要花费大量的精力去搜索歌曲和浏览各种歌单。例如豆瓣FM需要用户花费大量的时间来调试电台,让电台学习用户独特的口味;世面上已经有根据情绪来推荐歌曲的应用,比如jing.fm和百度音乐,但是他们推荐的音乐和用户的喜好并没有关联,推荐的只是比较流行的音乐;另外诸如酷狗音乐,QQ音乐这些大型音乐收听平台,虽然乐库庞大,但是对音乐的分类粗糙,用户想要找到自己喜爱的音乐往往如同大海捞针一般艰难。对于一些喜欢花费时间享受音乐的用户而言,把时间浪费到自己并不感兴趣的曲目上会大大减小音乐带来的乐趣。 本音乐电台能根据用户自己的音乐喜好,来推荐相应的情绪音乐;音乐电台能够在知晓用户的音乐口味下,播放用户曾经
12、喜欢的歌曲以及推荐用户有可能感兴趣的歌曲。用户同时可选择相应的情绪来收听情绪电台。本电台通过api爬取用户在last.fm上大量的收听记录,对用户的音乐口味更为准确,且几乎无需花费时间来学习用户口味;用户可以选择相应的情绪电台.1.2国内外关于该论题的研究现状和发展趋势在欧美社会,数字音乐已经发展地相当成熟。因为互联网的普及极大地降低了数据流动的成本,以及音乐这种媒介非常容易被数字化的特征,音乐数据在互联网上被快速广泛得传播是必然的事情,相对于从传统的唱片店里购买CD,通过互联网搜索和下载音乐更加的快捷、经济和方便。目前在数字音乐领域,国外占主导地位的有以iTunes为代表的音乐搜索与下载模式
13、,以潘多拉网络电台为代表的歌曲分类与个性推荐模式,和以last.fm为代表的社交音乐推荐模式。iTunes乐库丰富,用户通过搜索可以轻易地下载自己喜欢的歌曲,通过歌曲榜单和歌曲分类,用户可以探索自己可能感兴趣的音乐。潘多拉网络电台颠覆了以往的音乐电台模式,具体地讲这个电台其实就是一个针对用户高度定制的个性化电台。通过用户对所播放歌曲的反馈行为(喜爱或者讨厌)以及歌曲本身的一些属性,找到与之风格相似的的音乐,推荐给用户。与传统播放器不同的是,潘多拉网络电台没有音乐播放列表,用户无法选定下一首歌曲,这样一来用户可以专注于音乐本身,从而提供一种连续的音乐体验。Last.fm的用户交互与潘多拉网络电台
14、比较相似,不同的是为用户推荐歌曲的算法有所不同。潘多拉网络电台中每首音乐都有对应的风格、情绪等一系列属性,电台通过这些属性来推荐可能符合用户口味的歌曲。Last.fm的设计思想则是,如果两个用户同时喜欢同一首歌曲或者相同的几首歌曲,那么用户A喜欢听的其它歌曲中有很大几率也符合用户B的口味,从而针对性的进行歌曲的推荐。目前,国内的音乐网站也如雨后春笋般层出不穷,老牌的音乐网站有酷狗音乐、QQ音乐等;还有对国外音乐网站的借鉴产品,例如豆瓣fm、虾米音乐等;在智能机日益普及的今天,也涌现出一大批移动端的音乐应用,例如天天动听,多米音乐等。但是目前国内音乐网站缺乏原创性以及对版权的保护,大多数只是对国
15、外同类网站的简单模仿。对于用户而言,很难满足一些个性化的需求,通常一个用户要找到一首符合自己口味的歌曲会花费大量的时间,难以体会到音乐带给人的愉悦和心灵上的享受。此外,国内音乐网站同质化趋势严重,各大音乐网站没有自己的特色,仅仅在外观设计上有所区别,而内容模块基本上大同小异,千篇一律的都是一些“推荐歌曲”,“音乐榜单”,“推荐歌单”,“分类乐库”等内容,久而久之使得用户产生审美疲劳。在中国已成为世界网民最多国家的今天,数字音乐在我国有着巨大的发展空间。我们不应该仅仅满足于对国外技术的模仿,更应该自主创新,才能抓住这一巨大市场,在业内竞争中取得优势地位。1.3 论文主攻方向本论文所研究的主要内容
16、是设计能够为用户提供个性化歌曲的音乐电台,对电台界面进行设计,开发针对Last.fm个人网站的网络爬虫,并提高网络爬虫的性能。1.4 论文的主要内容 本文分为五章。 第一章绪论,介绍了本文的研究目的和意义,以及国内外在此方面的研究现状,并说明了本文的研究内容。 第二章开发环境及关键技术,介绍了音乐电台的开发的环境及关键技术,包括python编程技术、json可拓展标记语言、tornado、MySQL、Redis、Nginx服务器。 第三章为音乐网站概要设计,对网站进行了需求分析,界面设计以及一些总体上的把握。 第四章为数据库的设计。 第五章是网络爬虫的设计和实现与网站各模块的实现。1.5 论文
17、的研究方法和技术路线 本论文主要采用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是一个关系型数据库管理系统,它创
18、建数据库非常简单,它占据了中小型企业Web开发数据库使用的大部分市场。即使是一些大型的企业,也有的会使用Mysql作为其web应用的数据库。Mysql数据库的优点是体积小,速度快,而且拥有成本极低。tornado框架是目前最流行的python Web应用开发框架,它强大的标签库以及精妙的架构设计无一不使得开发者开发程序变得轻松而富有创造性。2 技术支持2.1 python编程技术 在1989年圣诞节期间,著名的Guido van Rossum在圣诞节期间没有事情可做,为了打发时间,他编写了一门编程语言,这就是python。现在,全世界的编程语言五花八门,加起来有数百种,但其中的佼佼者大概有二十
19、来种。而Python语言在最近的十年,一直能够屹立于TIOBE排行榜前十,所以这是一门十分优秀的编程语言。同样作为编程语言中的常青树,c语言和Python相比,更加的贴近硬件。因此,当程序员需要编写的程序对运行速度和性能的要求更加苛刻时,他们往往会偏向于使用C语言。而Python作为为编写应用程序而生的高级语言,它的基础代码库异常的丰富和繁杂,包括了文件、网络、数据库、文本、GUI等各式各样的内容。所以通过Python来进行程序开发是一件非常简单的过程,因为有大量现成的代码可以使用,不需要程序员从头编写。总而言之,Python代码是简洁,优雅的代名词。有很多类型的应用都适合用python进行开
20、发,比如一些网络应用,脚本任务等等。2.2 json可拓展标记语言 JSON 是一种轻量级的数据交换格式,易于机器解析和生成,同时也方便人们阅读和编写。Json被用来储存和交换文本信息,和xml有着相似的功能。我们在javascript中不需要任何其它数据包就可以处理json数据,因为json是javascript的原生格式。Json的文本格式完全独立于语言,而且由于它的语言习惯和从语言家族类似,所以它常常被用来作为数据交换语言。与XML相比较,json的优势在于网络传输更加方便,但是却不够一目了然。2.3 tornado Tornado 是一个开源的网络服务器框架,该平台基于社交聚合网站 F
21、riendFeed 的实时信息服务开发而来。它是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具和优化。 Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的
22、 Web 框架。Tornado 是个轻量级框架,它的模块不多,最重要的一个模块是web,它就是包含了 Tornado 的大部分主要功能的 Web 框架。其它的模块都是工具性质的,以便让web模块更加有用.2.4 MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL作为最流行的关系型数据库管理系统,在Web应用方面是最好的RDBMS(Relational Database Management System,关系数库管理系统)应用软件之一。 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在
23、一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站的数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。由于自己开发只是一个小型的Web应用,这个应用仅仅涉及了五张数据表,所以在开发的过程中采用了MySQL数据库。同时为了便于对于数据库数据进行管理,自己采用了MySQL workbench这一款数据库管理工具,只需要简单的配置,就能对MySQL数据库进
24、行管理。 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查询算法,有效地提高查询速度;既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的
25、编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名;提供TCP/IP、ODBC和JDBC等多种数据库连接途径;提供用于管理、检查、优化数据库操作的管理工具;可以处理拥有上千万条记录的大型数据库。 MySQL提供很多种链接方法,其中JDBC就是一种很常用的Java数据库连接方法,它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。2.5 Redis Redis是一个key-value存储系统
26、。和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非常独特,用的是单线程。另一个大区别在于,用户可以在开发环境中使用Redis的功能,但却不需要转到Redis。Redis能够替代memcached,让用户的缓存从只能存储
27、数据变得能够更新数据,因此用户不再需要每次都重新生成数据了。2.6 Nginx Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行。Nginx
28、 官方提供的各种功能模块应有尽有,结合这些模块可以完整各种各样的配置要求,例如:压缩、防盗链、集群、FastCGI、流媒体服务器、Memcached 支持、URL 重写等等,更关键的是 Nginx 拥有 Apache 和其他 HTTP 服务器无法比拟的高性能。用户甚至可以在不改变原有网站的架构上,通过在前端引入 Nginx 来提升网站的访问速度。2.7前端技术 CSS,即级联样式表,为网页设计和开发提供了一个全新的方法。通过 CSS,我们可以将使用 HTML(即超文本标记语言)创建的网页上显示的文本与用于描述如何显示和表示该文本(使用 CSS 进行定义)的信息完全分隔开。CSS 旨在解决问题并
29、帮助设计者节省时间,同时它还使设计人员能够以更多的方式设计网页外观。Css的应用非常地普遍,大多数网页都会使用css技术设计外观。举一个典型的示例:某些网页以特定的方式突出显示其链接。它们的颜色不同于该页上其他文本的颜色,并且将鼠标移动到这些链接上方时,它们的颜色会发生变化或者出现下划线。此操作就是通过 CSS 样式定义而不改动 HTML 代码来实现的。 Html(HyperText Markup Language),即超文本标记语言,它是以标准通用标记语言(SGML)为模板开发的下一代语言。准确的来说,html是一个规范,一个标准,通过成对的标签,它规定了在网页(Page)中每一块该显示何种
30、内容,图片或者文字,以及其相应的排版格式。通常,html语言是会结合其他页面相关技术一起使用,以达到十分强大的界面显示效果。Html语言的标签库并不复杂,而且简单易学,随着时代的发展,它慢慢的由1.0版本过渡到5.0版本,其功能性、实用性得到不断的加强。它是基于web的应用开发的核心技术之一,虽然并不如其他技术一般复杂,但是其重要性却是许多web开发技术所不能比拟的。 Jquery是一个十分优秀的轻量级javascript库,所谓javascript库,就是说它是基于javascript语言开发的,内部实现了许多重要、常用的功能的方法的一个集合。它的目的是为了使网站开发人员在实现网页交互或者说
31、前后台交互中更加方便易行,它的核心是简单、易用,代码量少。Jquery功能强大,可以简单的操作document对象,制作动画效果,易于进行事件处理,其中,特别重要的一点是,它的为Ajax功能的使用提供了十分简单方便的接口,极大的减少了与后台交互并局部更新的代码量。通过Jquery的Api,开发者们对于网站的开发可以更加具有创造性。2.8 MVC设计模式 MVC,即Model(模型)、View(视图)、Controller(控制器)。在MVC框架出现之前,java web开发者经历了Model 1 与Model 2 开发时代。早期的web应用都是静态页面,没有动态的显示效果,也无法动态的与用户进
32、行交互。MVC框架采用分层的思想,将web应用开发分为三层来分别开发,这不仅使得开发的目标变得更加明确也使得各层之间的耦合度得到降低,因此,降低了后期再次开发的成本,便于维护,可扩展性较强。然而,MVC框架并不总是好的,对于开发大型项目来说,自然采用MVC框架能够极大的提高工作效率,降低后期维护的成本,但是对于一些小型的Web项目来说,本身功能比较简单,若采用MVC框架,则会将一些简单的代码分割成复杂的三层,既增加了代码的复杂度,也降低了代码编写的效率,并且小型web项目的维护也不像大型项目那么频繁,所以,Model 1模式在小型项目中也是有用武之地的。2.9 网络爬虫2.9.1 网络爬虫的分
33、类 网络爬虫通过技术和功能等不同角度有很多种分类。基于整个web的网络爬虫:简称全网爬虫,是最基本的网络爬虫。这种网络爬虫指从某一个或某几个初始种子 URL开始,对整个web的资源不断进行爬取和分析,直到满足一定的停止条件。这种网络爬虫消耗的资源非常大,需要抓取的页面非常多,所以一般被用来为搜索引擎和大型网络内容提供商提供数据采集服务;基于主题的网络爬虫(也被称作聚集型网络爬虫):这种网络爬虫会定义一个主题范围,然后有选择性的爬取相关页面。区别于全网爬虫不加甄别的进行页面爬取,聚集型网络爬虫需要爬取的页面少,对于网络和硬件资源的消耗也大为减少,可以在内容方面得到更快的更新,满足人们对特定信息的
34、需要。为了进行主题甄别,聚集型网络爬虫增加了两个模块,一个是链接评价模块,另一个是内容评价模块。通过对页面内容和链接的重要性进行计算,来决定链接的访问顺序。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同;增量式网络爬虫:爬取的是新增的和发生变化的页面数据。传统的网络爬虫在根据自己的设定爬取一定的数据后就会停止对数据的继续抓取,在一定的周期以后,重新进行一轮数据抓取以替代以前的过时的数据。但是这样做会爬取大量的重复资源,在时间和资源上的浪费比较大。增量式网络爬虫则较好地解决了这个问题,减少了重复和浪费。但是为了实现这种数据抓取方
35、式,需要更高的算法复杂度和技术难度;其它类型的网络爬虫:在现实应用中,为了提高性能或者满足用户个性化需要,衍生出了一些其它类型的网络爬虫。例如,基于用户个性化的网络爬虫:这种爬虫根据用户的兴趣过通过与用户的交互来为用户提供个性化的数据信息,不同用户搜索同一个关键词会返回不同的结果;基于元搜索的网络爬虫:把用户提交的关键字提交到多个搜索引擎,然后在分析整合所得结果后,再把内容返回给用户。2.9.2 网络爬虫常见搜索策略 由于工作量巨大,所以全网爬虫通常会采用一些爬行策略来提高效率。常见的策略有如下三种:深度优先策略,核心思想是访问被搜索结构的叶子节点。从初始的页面开始,进行深度优先的搜索,不断访
36、问下一级链接,直到不能继续深入为止。因此只有当爬虫爬完一个分支后才可以爬取其它分支。深度优先搜索策略的优点在于,对于深层嵌套的内容,可以被尽可能的遍历。但是这种策略也有先天不足,即如果某链接形成一个死循环的话,这种爬行策略会做大量无用功,造成大量的资源损失。广度优先策略,这种搜索策略首先会将当前页面的所有超链接搜索完成后,才会进行下一层页面的爬行。广度优先策略避免了深度优先策略的死循环问题,而且储存比较方便,不需要消耗大量空间对中间节点进行储存。但是这种搜索策略需要耗费一定时间来访问到较深层的页面,而且有很大可能会遗漏一些比较孤立的信息页面。IP地址搜索策略,网络爬虫被赋予一个种子IP地址,继
37、而对这个初始的地址段后的每个www地址中的文档进行遍历。并且忽略文档文件中指向其他站点的链接地址。这种搜索策略只对于比较小规模的搜索比较适合,可以发现一些较少被引用的页面的信息。3 音乐网站概要设计3.1 概述 本章主要从需求分析,界面设计和核心功能等三个方面对系统的设计进行了讨论。系统设计阶段是软件开发过程中极其重要的阶段,因为它决定了软件开发后续工作的方向,方向选择方面如果出现错误,将对软件开发工作造成致命性打击。在这一阶段,需要开发者从全局的角度进行思考,对系统的整体框架进行讨论和设计。3.2需求分析 用户永远是互联网产品的根本,没有用户的产品也就失去了意义。所以评价一个互联网产品的标准
38、,最重要的就是它是否满足了用户的需求。进行需求分析时,首先要明确产品的目标人群,否则需求分析也就无从讨论了。在需求分析阶段,我们需要进行大量的调研,编写许多的功能需求文档,对其可行性做出评估,确立产品需要实现的功能,为后续的开发工作打下稳定的基石。3.2.1 面向人群 应当指出,本音乐电台是为了区别于市面上大多数音乐软件而进行开发的。开发的目的在于能够提供一些市面上同类产品无法做到或者缺失的用户功能,即根据用户的情绪提供个性化的歌曲。一般对于此种功能有要求的用户,都是追求极致的音乐发烧友或者对美和艺术有着较高要求的人群。这就对我们音乐电台的歌曲推荐功能和界面设计方面提出了更高的要求。3.2.1
39、 功能性需求 3.2.1.1 需求功能划分 目前市面上音乐软件、音乐网站可以说是鳞次栉比,但遗憾的是,这些音乐产品都没有自己的特色,流于俗套。大多数网站只是互相模仿和对国外技术的照搬,同质化趋势严重,忽视了一些用户群体的需要。通过我们对音乐网站的调研,发现市面上的音乐产品存在着以下几点缺陷:需要较长的时间才能适应用户的口味,不能根据用户的情绪来进行歌曲推荐,歌曲分类过于复杂,需找自己喜欢的音乐往往非常令人厌倦。据此我们开发出的电台主要划分为以下几个功能模块:情绪电台切换,歌曲播放控制,歌曲收藏,音乐展示以及用户管理。3.2.1.2 功能描述音乐展示:在播放歌曲时通过图形界面为用户展示相关信息。
40、一方面可以为用户展示出歌曲专辑信息、演唱者信息、播放进度、所处情绪电台信息,另一方面也可以为用户带来视觉上美的享受。歌曲播放控制:这是音乐电台最基本的交互功能。本电台以简单、省心为出发点,只为用户提供了三个播放控制交互,分别是播放/暂停,随机播放,下一首。收藏:作为一个针对用户的个性化电台,收藏功能当然是必不可少的。当用户对当前播放的歌曲非常喜欢时,可以通过点击右下方的红心按钮进行收藏。 用户管理:本电台之所以可以几乎不用花费时间来适应用户的口味,在于电台可以通过用户在last.fm上收听歌曲的记录来分析出用户的喜好。使用本电台,需要从该模块登陆last.fm。本电台获取到访问用户在last.
41、fm的个人数据的权限后,通过last.fm提供的api接口来爬取用户的个人数据。 情绪电台选择:本电台从功能上讲是一种情绪电台。它的核心功能就是给用户推荐适合用户当前情绪下收听的同时也适合用户口味的歌曲。它可以通过一些算法计算当前应该播放的电台的情绪,也可以通过用户点击情绪模块中的up、down、low、high几个情绪分类来自行决定要收听哪类情绪电台。3.2.2 性能需求 流畅性:通过优化代码逻辑,界面逻辑和系统逻辑,提高系统的反应速度,优化系统的性能,使得用户体验更加流畅。稳定性:通过代码的设计和系统的测试,来尽量消除系统存在的bug,增强系统的容错能力,从而提高用户体验。易用性:实现设计
42、的功能,满足产品面向人群的需求,减少不必要的冗繁操作,让用户使用起来更加的方便、简单。可维护性:软件开发不是一件一劳永逸的事。再高明的设计也往往会存在一些意想不到的缺陷,或者有须要提升的空间。所以系统的设计应该为以后的维护提供便利,紧跟先进的技术和理念,不断对系统进行更新换代。3.2.3运行环境需求 本系统基于mvc设计模式,采用了简洁流行的Python编程语言,利用tornado框架,使用MySQL+Redis组成的高性能数据库,进行系统的开发。 操作系统要求:windows xp以上,Mac OS,Linux。 编程工具:Sublime Text2 服务器需求:tornado web端服务
43、器。 数据库:MySQL;Redis。3.3 界面设计3.3.1 技术手段 本网站的前台采用了目前最流行的CSS+ HTML5+JSP技术,界面美观大方,代码逻辑清晰。 3.3.2 设计风格 简约:极简的设计风格是一种趋势。在这个越来越快节奏的现代社会,人们穿梭在钢筋水泥之中,疲惫不堪。我们需要一个去伪存真,简单纯净的地方来休憩心灵。例如ios从拟物化的设计到扁平化的设计,其实就是一个去除纷繁的细节,突出本质的过程。 沉浸式:通过复杂的算法和简洁的交互,让用户无需花费精力进行冗杂的播放控制,用户可以全身心的投入到音乐的世界中,得到流畅的、沉浸式的音乐体验。 统一性:不同界面之间有着统一的色彩与
44、布局设计,整个音乐网站带给用户一种一致的视觉体验。同一个界面之中不同模块与动画过度效果具有一致的设计,不会带给用户分裂的感觉。3.3.3 界面设计方案3.3.3.1 软件框架设计本电台的框架设计遵从简洁至上的原则。在主要播放界面,绝大部分面积分配给电台图像展示模块。电台占据了屏幕左侧和中间的位置。不同情绪的电台,会配上相应的一些唯美图像。当用户在欣赏歌曲时,会在不经意间被这些图像吸引,陷入光和影的无限遐想之中。右侧从上到下依次为专辑信息展示,歌曲播放控件,收藏按钮。用户所需的交互只在一个界面内就可以完成。3.3.3.2 软件启动封面设计 一个软件的启动界面是非常重要的,因为用户的第一影响往往就
45、来自启动界面。本电台启动界面采取的封面是一张典雅的高清晰度的老式收音机与一台笔记本电脑组合的图像,满含怀旧的音乐风情又不失现代的科技感。位于界面中部偏上是本电台的图标,中下部是一枚精致的开启电台的按钮。精心的图形设计和美丽的动画效果非常打动人心,给人以美的感受。3.3.3.3软件按钮设计软件的按钮设计借鉴了目前流行的扁平化设计。不同于拟物化设计,扁平化的设计能起到减轻视觉负担的作用。大脑在处理扁平抽象的图形时,会把注意力集中到图形本身的功能上来,而不会去太多处理图像细节,这样一来,起到了给人减压放松的心里效果。本电台的按钮设计具有丰富的动态效果,例如静态效果、点击效果、鼠标放在上面未点击的效果
46、、独立变化效果等等,是一套精致美丽的系统。3.3.3.4 标签设计 本电台去掉了繁琐的标签。一方面是为了提高界面的美观和简洁,另一方面也是因为本电台力求实现一键式收听体验,将复杂性隐藏在后台之中,简化去掉了一些繁琐的功能和设置项。3.3.3.5 图标设计 对于一个互联网产品来说,图标的设计是非常重要的。一个美观的图标会大大提高用户的观感和喜爱程度。前一段时间很火的锤子系统,它最为人称道的一个特点就是针对市面上的安卓应用,尽量为每一个应用设计一个美观的图标,这使得它的界面与其他系统相比有了很大的提升。本电台名为”mizar”,图标使用银白色半透明字体,给人以纯洁,干净的感觉,在暗色调背景的衬托下
47、,更有一种出淤泥而不染的格调。3.4核心功能3.4.1数据爬取功能本电台通过last.fm上提供的开放的API接口,从last.fm 上爬取用户收听的歌曲信息,通过一系列的分析和组织,转化为程序需要的内容和样式,存储在数据库中。3.4.2 歌曲推荐功能爬虫爬取的数据,会保存到两张表中,一张是用户收听记录,另一张是推荐歌曲列表。根据这两张表中的歌曲标签信息,程序会通过一定的算法,得到一个推荐歌曲的播放队列。在歌曲的播放过程中,程序会记录用户的歌曲切换次数。当切换次数达到一定的阈值后,程序将会改变推荐歌曲的风格,更新歌曲的播放队列。4 数据库设计 本电台需要将爬虫获取的信息有效存储在数据库中,这部分信息包括两部分,一个是用户收听歌曲记录,另一个是推荐歌曲列表。 通过上文的分析,结合实际情况,本系统在服务器端采用mysql数据库,设计创建以下三张表:4.1 用户信息表