基于大数据的音乐流行趋势预测及推荐分析(Python+Spring Boot+Node.js+MySQL)

目录
摘 要 - 1 -
Abstract - 2 -
第1章 前 言 - 4 -
1.1 研究背景 - 4 -
1.2 研究现状 - 5 -
1.2.1 国内研究现状 - 5 -
1.2.2 国外研究现状 - 6 -
1.3 发展趋势 - 6 -
1.4 研究主要内容 - 6 -
第2章 技术与原理 8
2.1 大数据环境 8
2.1.1 全球开源的Linux系统-Ubuntu 8
2.1.2 开源分大数据处理平台Hadoop 8
2.1.3 shell 8
2.1.4 kettle 8
2.1.5 Scala 9
2.2 数据获取与处理 9
2.2.1 Pymysql 9
2.2.2 Urllib.request 9
2.2.3 besutifulsoup4 9
2.3网页端 9
2.3.1 tomcat9 9
2.3.2 spring 10
第3章 数据采集及分析 11
3.1 数据获取 11
3.2 音频处理 12
3.2.1 音乐格式转换与时长处理 12
3.2.2 midi生成 13
3.3 音频特征 14
3.3.1 基础音频信息 14
3.3.2 统计特征提取 18
3.4 数据降维及归一化 22
3.4.1 PCA主成分分析 22
3.4.2 数据归一化 23
3.5 聚类算法 23
3.5.1 K-Means聚类 24
3.5.2 MiniBatch k-Means 25
3.5.3 评价聚类模型 25
3.6 分类算法 27
3.6.1 HMM算法(隐马尔可夫模型) 27
第4章 系统实现 30
4.1系统总体模块结构设计 30
4.2 局部模块设计 31
4.2.1 登录注册模块 31
4.2.2 热门推荐模块 31
4.2.3 新歌上架模块 32
4.2.4 个性化推荐模块 32
4.2.5 用户中心模块 33
4.2.6 音乐管理模块 33
4.2.7 用户管理模块 34
4.2.8 评论管理模块 34
4.3 系统角色功能设计 35
4.4 推荐系统数据库设计 35
4.4.1 数据库概念结构设计 35
4.4.2 数据库物理结构设计 37
4.5 大数据平台搭建设计 39
4.5.1 hadoop的安装与配置 39
4.5.2 spark的安装 42
4.6 推荐算法设计 42
第5章 结论 48
参考文献 49
致 谢 50
项目简介:可以看作是一个简单的HTML5在线音乐播放器。

主要环境:
Spring Boot 2.5.x;Vue3.0(虽然是3.0,但还是2.0的写法);数据库mysql8.x版本(没有的可以在官网下最新版https://www.mysql.com/downloads/);Node.js版本>=14.1,在官网下载最新的LTS长期支持版本也可(https://nodejs.org/en/);JDK8或者JDK11,在官网下载或者使用上传的jdk11版本

主要开发工具:
Java主要使用IDEA,可以使用校园邮箱whut.edu.cn结尾的邮箱申请旗舰版,邮箱申请在智慧理工大可以申请,很快。
前端的话我主要使用的是VS Code,,也可以使用web Storm等

VS Code插件:
汉化:Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code;
开发Vue:Vue 3 Support - All In One;Vue Language Features (Volar);XML Format;Visual Studio IntelliCode;Live Server等。

# 获取用户的信息
# 动态爬虫
from selenium import webdriver
# 解析文本
from bs4 import BeautifulSoup

# webdriver实例化,因为需要进入到iframe中获取数据,所以需要使用selenium
option = webdriver.ChromeOptions()
# 设置option,不弹出显示框
option.add_argument('headless')
# 调用带参数的谷歌浏览器
driver = webdriver.Chrome(options=option)


def get_playlist_url(file_name):
    """
    得到歌单的url数组
    :param file_name: 存放歌单的文件的名称
    :return: 歌单url数组
    """
    playlist_url = []
    with open(file_name, 'r', encoding='utf-8') as f:
        for line in f:
            data = line.split('\t')
            playlist_url.append(data[2])
        f.flush()
        f.close()
    return playlist_url

def write_user(playlist_url):
    """
    根据歌单id获得当前歌单中共评论用户的信息,并存储起来,然后抓取他们的播放记录
    :param playlist_url: 歌单url
    :return:"""
    # 发送url请求
    driver.get(playlist_url)
    # 找到指定iframe标签(这里是g_iframe)然后跳入
    driver.switch_to.frame('g_iframe')
    # 使用bs4解析文档
    html_soup = BeautifulSoup(driver.page_source, "html.parser")
    # 获得评论部分文档
    all_user_div = html_soup.find(id='comment-box').find(class_='m-cmmt').find_all(class_='itm')
    # all_user_div = html_soup.find(id='comment-box')
    print(all_user_div)
    # 写入文件
    with open('dataset/user_info_init.txt', 'a', encoding='utf-8') as f:
        for user_div in all_user_div:
            user_info = user_div.find(class_='cntwrap').find('a')
            user_id = user_info.get('href')[14:]
            user_name = user_info.text
            user_url = 'https://music.163.com/#' + user_info.get('href')
            user_info_line = user_id + '\t' + user_name + '\t' + user_url
            print(user_info_line)
            f.write(user_info_line + '\n')
            f.flush()
        f.close()


# 获得歌单id数组
all_playlist_url = get_playlist_url('dataset/playlist_data.txt')
for playlist_id in all_playlist_url:
    write_user(playlist_id)

# def get_user_info(playlist_id):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/131803629