基于requests的流行音乐网站的数据采集系统的设计与实现【高分论文】

本人专注于计算机、大数据、人工智能、信息安全等系统开发,由于近期单量大,没有来得及更新。 如果大家有需要,可以 力口 微 人言 ypb0228 可加急处理 价廉物美 但是谢绝白嫖

资源链接

论文链接

下载论文

源码链接

源码

1 绪论

1.1研究的目的与意义

1.1.1研究的目的

现在有很多音乐网站,可以让音乐爱好者浏览并下载收听,音乐爱好者可以根据分类搜索音乐。但是这些网站存在一些问题,比如分类不够精细,没有按照评分和用户点赞数量排序,用户在听音乐的时候,只能通过点击明细的方式才能看到具体的音乐评分。
通过采集九酷音乐网网站获取到歌曲相关数据,并对数据进行清洗与分析,完成数据采集系统的设计与实现。本系统将数据分析后以图表的形式显示出来,使歌曲的各类信息一目了然,更直观看到并了解歌曲的类型、谱曲者、作词者与发行时间等各类信息以满足用户需求。

1.1.2 研究的意义

随着时代的发展,现在以及未来一切研究都必将基于数据,也就是说,对于音乐的研究也将是不例外的。因此有了基于requests的流行音乐网站数据分析系统,本系统主要针对的是用户,让用户能够在本系统中获取所需要的数据,以供用户方便找到自己想要听的歌曲。
本系统向用户展示数据可视化之后的图示信息和检索功能,检索就可以通过搜索音乐的某个信息,比如音乐的类型,可以找到此类型的音乐,或者根据看到数据可视化之后的图,来找到用户喜欢的歌曲。

1.2 国内外研究现状及发展趋势

在国内音乐平台的发展经历了一个从免费提供音乐到收费的转变过程,以网易音乐为代表的一些音乐平台提供一些相对过时的或者音质不是特别好的音乐给普通用户,而如果一个用户要想听到最流行的音乐或者最好的音质则需要成为VIP用户,这一策略导致了国内音乐平台更好的发展,人们也开始逐渐接受了收费服务。在音乐平台上,很多音乐平台都可以通过收集用户亲亲流行音乐的时长,播放量等因素进行预测,从而可以给用户推荐最为流行的歌曲,或者将相应的歌曲进行分类,以供用户甄别和选择。在国内音乐的预测中,一些学者使用了基于机器学习的一些方法,先用特征工程等技术收集影响流行音乐流行的一些属性,这些属性包括歌曲,艺人,播放量,播放时长,播放行为等因素,然后基于这些因素构建模型,并对流行音乐进行预测。
国外对于音乐版权的保护做的更好一些,很多音乐平台。都很早的开展了收费服务,通过提供收费服务,一方面可以使得一人获得更好的收益,从而可以激发他们的创作动力,另一方面又可以让音乐爱好者或者用户在平台上可以享受更好的音质,更好的体验。由于国外有相关的音乐版权保护机制,而且发展相对较早,因此很多音乐平台在流行音乐的预测等方面做得较好,比如瑞典的Spotify公司,通过收集用户的播放量,播放次数,播放时长等一些信息,从而可以预测流行音乐,可以给用户进行推荐。此外,国外的苹果和亚马逊也有相应的音乐平台,他们可以通过对音乐流行趋势的预测,给用户推荐更好的歌曲。也可以给平台带来更多的收益。

1.3 相关技术介绍

1.3.1requests

基于Requests多线程对九酷音乐网进行数据采集,使用正则表达式和Xpath对所需要的电影信息进行精准定位,爬虫获取的数据保存为CSV格式,同时连接数据库将数据实时存储在数据库中(MySQL关系数据库)。

1.3.2BootStrap等技术

基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。

1.3.3Echarts

采用Echarts以折现图、饼状图、柱状图等形式进行数据的可视化输出,最后通过搭建Django生成系统用于登陆、注册和对生成的可视化页面进行展示。

1.4 课题研究内容

本论文从九酷音乐网网站的数据采集开始,分别论述了系统的数据处理分析部分和数据可视化展示部分,并展示了设计系统成功的实现效果。本论文分为以下五个章节。
1绪论。介绍研究本系统的目的与意义,及所用到的相关技术。
2系统需求分析。介绍可行性、系统的需求分析及运行环境需求。
3系统设计。介绍系统的整体设计结构、业务流程图及数据库的设计。
4系统实现。介绍数据采集模块的设计与实现,及数据展示模块的设计与实现。
5系统测试。介绍系统测试方法,测试用例的预期结果。

2 系统需求分析

2.1可行性研究

2.1.1数据可行性

数据采集的目标网站:https://www.9ku.com采用xpath的方法对音乐网站信息的精准定位。
数据采集的目标网站:九酷音乐网,网址为 https://www.9ku.com/ 。
数据采集页面截图:
在这里插入图片描述

HTML源码页面截图:
在这里插入图片描述
在这里插入图片描述

数据采集的内容:可以采集音乐的相关信息,如音乐名称、音乐描述、音乐时长、音乐好评度、音乐差评度、音乐评价、歌词链接、音乐链接、歌手名称、歌曲类型等。
数据采集预计数量:预计可以采集数百到数千条音乐相关信息。
综合说明数据是可以采集的、可以分析使用的、可以存储的。通过对九酷音乐网的数据采集和分析,可以帮助用户更好地了解音乐网站的数据情况,进行数据分析和决策。同时,采用合适的技术手段进行数据存储和管理,可以保证数据的安全性和可靠性,以便进行后续的数据处理和应用。

2.1.2技术可行性

技术上的可行性,就是在现有技术的基础上,能否实现。在此系统的研制中,主要包括以下三项技术。
通过爬虫来获得有关的音乐信息,可以通过基于python的多线程和requests来完成爬虫。
对数据的处理与分析,对数据的处理与分析一方面可以采用python的相关数据处理包比如numpy、pandas进行处理,还可以使用mysql数据库进行一些约束,比如外键约束和完整性约束等,以保证数据的规整性和结构化。
针对音乐的数据展示,系统前端是基于HTML、CSS、JavaScript等技术开发的,后端是基于 Django的 python平台,它能完成ORM的开发,在MySQL数据库上的支持也很好,数据的展示中,重点使用Echart来实现可视化。
总体上,该系统具有技术上的可行性。

2.1.3经济可行性

本系统主要投入皆是可重复利用资源,例如电脑、鼠标等硬件设备,PyCharm、navicat等软件设备,而由于上述国内对于该类型系统研究环境可知,本系统将有一定的市场环境。此系统为本人的毕业设计,由本人设计且有指导老师辅导完成,不投入过多的人力资源。所以,毕业设计选题系统在经济上可行。

2.2需求分析

2.2.1数据流图

(1)系统的输入和输出。
系统中的用户可以登录系统,然后系统可以对登录用户进行认证,通过认证的用户可以进入到系统中,系统可以给用户展示系统中的音乐数据。整个数据流图的顶层图展示如图2-1。
在这里插入图片描述

图2-1 顶层图

(2)系统的内部。
音乐在完成了爬虫之后,系统需要对音乐进行展示,音乐爬虫和展示的流程图展示如图2-2所示。
在这里插入图片描述

图2-2 0层
(3)加工内部图。
音乐爬虫的过程中,需要先确定网络的地址,然后进行分页操作,再进行音乐数据爬取,最后完成数据入库。音乐爬虫的1层图展示如图2-3所示。
在这里插入图片描述

图2-3 爬虫1层图
音乐展示的时候,首先需要对音乐信息展示,第二要对音乐的播放链接展示,并可以展示对应音乐播放界面,用户点击之后,还需要记录用户的行为信息。音乐展示的1层图展示如图2-4所示。
在这里插入图片描述

图2-4 音乐展示1层图

2.2.2数据字典

1.数据流条目
系统中的数据流条目是记录系统中的数据流的关键因素。系统中的数据流包括的有音乐数据爬虫、歌手数据、音乐分析等过程。
数据流条目展示如表2-1所示。
表2-1 数据流条目

名称来源去向组成属性描述
音乐爬虫九酷音乐名称、歌手、链接、歌词
歌手数据九酷歌手歌手名称、简介
音乐分析音乐听众名称、播放链接、点赞

2.数据存储条目
表2-2 数据存储条目

名称组成存储方式组织存取要求
音乐名称、歌词、链接、市场行存储按照爬取时间入库关键字是音乐序列
歌手歌手姓名、歌手简介按行存储爬取时间关键字是歌手序列

3.数据项条目
数据项条目如下表2-3所示。
表2-3 数据项条目

名称类型长度/精度取值及含义
音乐序列整型11关键字
名称字符型20音乐名称
链接字符型20音乐链接
时长整型11音乐时长
点赞数整型11点赞数量
差评整型11差评数量
歌手序列整型11歌手关键字
歌手名称字符型20歌手姓名

4.加工条目
加工条目如下表2-4所示。
表2-4 加工条目

名称执行条件输入输出加工逻辑
音乐数据爬虫启动九酷网站音乐数据如果重复不再爬取
歌手数据爬虫启动九酷网站音乐数据如果重复不再爬取

2.3运行环境需求

包括软件环境和硬件环境需求,标明版本号。例文如下。
1.硬件环境:
(1)操作系统:Windows 10 及以上;
(2)CPU:英特尔酷睿i7;
(3)内存:8G;
(4)硬盘空间:100G 以上;
2.软件环境:
(1)开发系统:Windows 10 ;
(2)开发平台:PyCharm 社区版2020;
(3)浏览器:Chrome 89.0.4389.114(正式版本);
(4)数据库:MySQL 8.0;
(5)前端框架:Django 2.2;

3 系统设计

3.1系统体系结构

本系统主要分三部分,数据采集、数据清洗、数据分析和展示。
数据采集部分使用request技术实现,首先使用request获取音乐相关数据,然后对响应数据进行解析。
数据清洗使用numpy、pandas等包实现,包括对重复值和缺失值等的处理。
数据展示使Echarts组件展示可视化,用JavaScript通过Ajax调用后台服务,后台服务则使用python开发,整个项目的框架基于Django开发。
体系结构图示例如图3-1所示。
在这里插入图片描述

图3-1 系统体系结构图

3.2功能设计

系统设计是系统实现的前提,在系统建设的过程中,如果可以充分对系统进行设计,那么可以减少返工的可能性,因此,在系统设计过程中,需要尽可能翔实的考虑和规划,可以减轻后续开发的眼里。
系统主要实现用户注册、登录、音乐排行展示、音乐播放、查看歌词、点赞数排行、评分排行等,所有的排行可以展示音乐歌曲的名称,然后用户可以点击音乐进行收听。经过前面的需求分析,可以确定的基本流程是先从九酷网站获取音乐数据,然后可以在本系统中对于这些已经爬取的信息进行修正,比如由于某种原因爬取的一些错误数据都可以在系统中进行二次加工。之后,再根据这些已经获取的数据进行数据分析,数据分析包括歌手的分析和音乐的分析。系统最后要实现的一个重要功能是根据音乐相关数据构建一个预测音乐评分的模型,然后在系统中,音乐创作这可以输入小样本的点赞数量和踩数量来预测评分。
经过分析,系统要完成的功能包括系统管理、爬虫管理、音乐管理、歌手分析、音乐评分预测、音乐类型分布等。
系统的整体功能架构图如图3-1所示。
在这里插入图片描述

图3-2 系统功能架构

3.3系统业务流程图

系统的业务流程分为两大部分,一是数据采集部分,二是数据展示部分。数据采集部分从音乐网站采集到音乐数据,然后入库,数据展示部分展示采集到的音乐数据,并进行分析展示分析后的部分结果。对应的系统业务流程图展示如图3-3所示。
在这里插入图片描述

图3-3 系统业务流程图
1.数据采集部分具体内容:
(1)爬虫基本配置:第一步对setting文件进行配置,第二步设置爬虫的种子链接,第三步进行爬取。
(2)xpath基本规则:/从当前节点选取直接子节点,//从当前节点选取子孙节点,·选取当前节点,…选取当前节点的父节点,@选取属性。
(3)数据清洗:通过pandas和numpy库对数据进行一定的数据清洗,比如缺失值和异常值的处理。
(4)数据持久化:采集到的数据经过排重处理后,保存到数据库。
2.数据分析与展示部分具体内容:
(1)通过导入.csv文件对数据进行数据可视化,具体对电影各类信息的数据进行分析。
(2)最终以各种图的形式展现数据可视化的结果,展示的内容包括比如音乐类型的分布、音乐好评展示等。

3.4数据库设计

系统中的数据库是系统的业务支撑基础,系统中的所有数据最终需要落地记录到数据库中。本系统中的数据涉及到音乐相关信息,比如音乐、类型、歌手等,它们之间的关系非常适合使用关系型数据库存储,因此使用关系型数据库MySQL存储。经过分析,数据库中的实体包括用户、音乐信息、音乐类型、歌手、评价信息、角色、权限等。
用户信息记录了一个用户的基本认证信息,包括用户是否激活,用户归属角色以及用户密码等信息。用户表的表结构如表2-1所示。
表3-1 用户表结构

字段类型长度是否为空描述
IDint20ID
USER_NAMEvarchar20名称
PASSWORDvarchar20密码
ROLEvarchar20归属角色
IS_ACTIVEint10是否激活
ROLE_IDInt10角色

角色表中记录的是角色的信息,角色信息包括角色的名称,角色表的表结构如表3-2所示。
表3-2 角色表结构

字段类型长度是否为空描述
ROLE_IDint10序列
ROLE_NAMEvarchar20名称
ROLE_DESCvarchar20描述

歌手表中记录的是歌手的信息,包括歌手姓名和描述等,歌手表的表结构如表3-3所示。
表3-3 歌手表结构

字段类型长度是否为空描述
IDint10序列
NAMEvarchar20名称
DESCvarchar20描述

权限表中记录的是权限的信息,包括权限名称、描述和权限涉及角色等,权限表的表结构如表3-4所示。
表3-4 权限表结构

字段类型长度是否为空描述
RIGHT_IDint10序列
NAMEvarchar20名称
DESCvarchar20描述
MENUvarchar20菜单

音乐类型表中记录的是音乐的类型信息,包括音乐类型名称、描述等,音乐类型表的表结构如表2-5所示。
表3-5 音乐类型结构

字段类型长度是否为空描述
IDint10序列
NAMEvarchar20名称
DESCvarchar20描述

音乐信息表中记录的是音乐的信息,包括音乐类型、歌手、音乐名称、评分、点赞数量、差评数量、播放链接等,音乐表的表结构如表3-6所示。
表3-6 音乐表结构

字段类型长度是否为空描述
IDint10序列
NAMEvarchar20名称
DESCvarchar20描述
SINGER_IDint10歌手
TYPE_IDint10类型
SCOREint10评分
LINKvarchar20链接
GOODfloat20好评数
SERIALvarchar20编号

菜单权限表中记录的是菜单的基本信息,一般包括菜单的标题、菜单的链接等信息。菜单权限表的表结构如图3-7所示。
表3-7 菜单表结构

字段类型长度是否为空描述
IDint10序列
TITLEvarchar20标题
PARENTvarchar20父级标题
URLvarchar20链接

4 系统实现

系统实现中的主要工作是对前面的设计进行实现,包括系统逻辑的实现,以及前端和后端的实现。

4.1 数据采集模块的实现

爬虫管理是系统中的一个重要功能,在系统中,通过爬虫获取了音乐的基本信息,爬虫的基本思路是先确定要爬取页面的基本网页结构,然后完成某一个页面的分页处理,然后根据分页结构调整爬取的URI,最后完成对所有分页的爬取。
爬虫的流程图如图4-1所示。
在这里插入图片描述

图4-1 爬虫的基本流程
爬虫管理的界面中,每次爬取数据之前,需要把之前的数据清理,然后再爬取,否则会出现冲突导致音乐数据之间发生问题。数据爬取中既有数据清理,也有数据爬取。数据爬取的界面操作如图4-2所示。
在这里插入图片描述

图4-2 爬虫管理
爬虫的核心代码如表4-1所示。
表4-1 多线程爬虫
在这里插入图片描述

爬虫从前台启动后,后台的pycharm会打印对应爬取信息,爬取小说的关键信息打印出来的过程展示如图4-3所示。
在这里插入图片描述

图4-3 爬虫过程
爬虫获取的音乐,经过了分析和清洗之后,最终获取的数据展示如图4-4所示。
在这里插入图片描述

图4-4 爬虫获得的音乐数据

4.2 数据分析与展示模块的实现

4.2.1用户管理

系统管理主要支撑的功能是用户管理、角色管理、菜单管理和权限管理等。首先由系统管理人员创建菜单,然后给角色分配菜单权限,之后把一个用户纳入角色就完成了整个系统的基本配置,用户就可以登录系统查看自己有权限的页面菜单。在系统管理中,用户管理是重要的功能。用户管理的主要任务是对用户的生命周期进行管理,包括注册、登录、注销等。用户管理的流程如图4-5所示。
在这里插入图片描述

图4-5 系统管理流程图

用户注册的时候需要输入用户相关信息,包括用户名密码等,然后点击确定,完成注册。
用户注册的界面展示如图4-6所示。
在这里插入图片描述

图4-6 用户注册界面
用户注册之后,如果注册成功,就可以登录系统,登录系统的界面展示如图4-7所示。
在这里插入图片描述

图4-7 登录界面
如果用户完成登录,就可以进入系统主页面,主页面左侧是用户的菜单列表,右侧是系统的主要展示区域。
主页展示如图4-8所示。
在这里插入图片描述

图4-8 主页展示

4.2.2 歌手产能分析与展示模块

一个歌手的产能是指这个歌手唱的所有歌曲的数量,一个歌手的产能可以反应出这个歌手的受欢迎程度,因此,给听众展示个数的产能,他们就可以看出歌手的受欢迎程度,基本流程是是首先获取歌手和歌曲,然后根据歌手来统计歌手的歌曲数量。整个歌手产能的信息管理的流程如图4-9所示。
在这里插入图片描述

图4-9 音乐管理流程图
歌手产能展示管理的界面如图4-10所示。
在这里插入图片描述

图4-10 歌手产能展示

4.2.3 音乐评分展示和分析

音乐评分展示的是每个类型的音乐的平均分数,这可以反应出这个类型的音乐的受众数量和流行程度,一个类型的音乐,如果一个类型的评分越高,说明这个类型的歌曲更为。
音乐评分展示界面展示如图4-11所示。
在这里插入图片描述

图4-11 音乐评分展示界面

4.2.4音乐类型分布

系统中,还需要获取高评分的新歌数据,然后根据类型分类展示这些高评分的音乐数据。
高评分音乐数据的分类展示如图4-12所示。
在这里插入图片描述

图4-12 类型分布展示

4.2.5 音乐好评展示和分析

每个音乐在网站上,都有用户对其进行评分,将每个类型的歌曲进行点赞,点赞数量就代表了用户的好评程度。
音乐好评展示界面展示如图4-13所示。
在这里插入图片描述

图4-13 音乐好评展示界面

4.2.6 音乐差评展示和分析

每个音乐在网站上,都有用户对其进行评分,可以是好评,也可以是差评,差评的音乐,就代表音乐本身不受欢迎,每个类型的音乐的差评数量按照音乐类型进行展示,就体现了那些较差的音乐。
音乐差评展示界面展示如图4-14所示。
在这里插入图片描述

图4-14 音乐差评展示界面

5 系统测试

5.1测试的基本概念

系统的测试是一个很重要的环节,项目的建设有没有完成最初的功能,都需要经过测试。检测就是对该体系的质量进行检测。通常,通过执行一个测试案例,可以实现系统测试,特别是功能测试。本系统中的主要功能爬虫管理、音乐分析、音乐预测等。下面将介绍这些测试案例的基本情况。

5.2测试用例

5.2.1数据采集模块的测试

数据采集的测试用例如表5-1所示。
表5-1 爬虫管理

测试用例测试功能测试内容预期结果
P1注册1.打开微软Edge浏览器2.输入http://localhost:8080/music/3.点击注册4.输入用户名和密码,进行听众注册1.注册成功
P2登录1.打开微软Edge浏览器2.输入http://localhost:8080/music/3.输入用户名admin密码1234561.登录成功
P3清理数据1.点击爬虫管理界面
2.点击清理数据1.清理数据完成
P4启动爬虫1.点击爬虫管理界面2.启动爬虫1.运行成功2.存储到数据库

5.2.2数据分析与展示模块的测试

除了爬虫管理,系统中的音乐分析也非常重要,音乐分析主要是分类别分析了音乐相关的信息,然后对于高评分的音乐还给出了分布特征,音乐分析的测试用例如表5-2所示。
表5-2 音乐分析管理

测试用例测试功能测试内容预期结果
1歌手产能数据分析与展示模块1. 提取需要分析的数据2. 按照需求进行数据分析3. 通过柱状图展示分析结果1. 成功提取需要分析的数据2. 按照需求进行数据分析3. 展示分析结果,使用户能够直观地了解数据分析结果
2音乐评分数据分析与展示模块1. 提取需要分析的数据2. 按照需求进行数据分析3. 通过柱状图展示分析结果1. 成功提取需要分析的数据2. 按照需求进行数据分析3. 展示分析结果,使用户能够直观地了解数据分析结果
3音乐类型数据分析与展示模块1. 提取需要分析的数据2. 按照需求进行数据分析3. 通过柱状图展示分析结果1. 成功提取需要分析的数据2. 按照需求进行数据分析3. 展示分析结果,使用户能够直观地了解数据分析结果
4音乐好评数据分析与展示模块1. 提取需要分析的数据2. 按照需求进行数据分析3. 通过饼状图展示分析结果1. 成功提取需要分析的数据2. 按照需求进行数据分析3. 展示分析结果,使用户能够直观地了解数据分析结果
5音乐差评数据分析与展示模块1. 提取需要分析的数据2. 按照需求进行数据分析3. 通过漏斗图展示分析结果1. 成功提取需要分析的数据2. 按照需求进行数据分析3. 展示分析结果,使用户能够直观地了解数据分析结果

结 论

目前,在互联网平台上有很多音乐类网站,这些网站基于某些规则给音乐爱好者展示音乐信息,比如按照某个维度分类,然后基于发行时间给用户展示,但是这种展示要么基于程序和技术的因素(比如按照数据库中序列的大小),要么基于平台的利益(比如给一些有利益关系的歌曲优先展示),这这些展示方式并没有基于用户的一些考量展示,比如基于评分进行排序展示。本系统通过爬取音乐网站的音乐信息,基于用户的角度展示音乐,还可以对音乐进行分析,并进行好评度的预测。
在系统设计和开发过程中,先收集了相关资料,然后综合分析对比,确定了系统的基本功能包括系统管理、爬虫管理、音乐信息管理、流行歌手、音乐分析和音乐预测等。其中系统管理主要对系统中的菜单、权限进行设置,爬虫管理负责从音乐网站爬取音乐和歌手信息;音乐信息管理则是由用户再次对音乐相关信息进行二次修正的过程;流行歌手展示了最流行歌手的信息;音乐分析对爬取音乐从别的维度重新展示;音乐预测可以完成音乐评分的预测。系统前端使用基于HTML等技术的前端技术实现,选用Boot Strap框架,而系统后端则选用基于python的Django实现,数据库选用MySQL,使用集成开发工具Pycharm完成了系统的开发,并经过测试验证,表明系统已经完成了需求中的所有功能。
尽管在开发系统的过程中,已经尽力实现相关功能,细化设计并通盘考量,但是仍然存在一些不足,一是系统目前还没有实现通过语音的方式交互使用;二是系统的界面美观度还需要进一步优化;三是系统的爬虫可以进一步完善,支持利用可视化方式爬取相关信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无忧必过

给我的奖赏能给您带来好运,顺祝

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值