django项目 网易云音乐
项目说明
网易云项目
- 语言:python
- 前端: bootstarp
- 后端: django
- 数据库:sqlite3
项目说明
- python爬虫爬取网易云的歌曲名称和链接,并保存到数据库中
- 使用bootstarp编写前端界面
- 使用django前后端交互
第一部分爬取网易云音乐歌曲名称和链接并且存到数据库
from asyncio.windows_events import NULLimport requests
import re
from multiprocessing import Pool
import urllib
import sqlite3headers = {'Referer': 'https://music.163.com/',"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 ""Safari/537.36"
}def get_page(url):res = requests.get(url, headers=headers)data = re.findall('<a title="(.*?)" href="/playlist\?id=(\d+)" class="msk"></a>', res.text)#print(data)pool = Pool(processes=4)pool.map(get_songs, data[:len(data) - 1])#print("下载完毕!")def get_songs(data):#print(data[1])playlist_url = "https://music.163.com/playlist?id=%s" % data[1]res = requests.get(playlist_url, headers=headers)for i in re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res.text):try:#print("Downing--" + i[1])ID = i[0]url = 'https://music.163.com/song/media/outer/url?id='req = requests.get(url + ID, headers=headers, allow_redirects=False)musicLink = req.headers['Location']if(len(musicLink)>30):savesql(i[1],musicLink)#print(i[1])#这个是歌曲名字#print(musicLink)#这个是歌曲链接#urllib.request.urlretrieve(musicLink, 'C:\\网易云\\' + i[1] + '.mp3')#print("Dend Downing + " + i[1])except FileNotFoundError:passexcept OSError:pass
def savesql(name, link, null=None):#null的设置是为了自增conn = sqlite3.connect('db.sqlite3')c=conn.cursor()c.execute('''CREATE TABLE IF NOT EXISTS common_music(musicname text,link text)''')c.execute("INSERT INTO common_music VALUES (?,?,?)", (null,name,link))conn.commit() # 提交事务conn.close()print(name,link)if __name__ == '__main__':# hot_url = "https://music.163.com/discover/playlist/?order=hot"#for i in range(0, 1, 35):for i in range(0, 1):hot_url = 'https://music.163.com/discover/playlist/?order=hot&cat=全部&limit=35&offset=' + str(i)get_page(hot_url)
这里中的savesql函数里面包含了创建数据库,创建表,以及添加数据等操作
bootstarp前端内容
第一部分:登陆界面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>* {margin: 0;padding: 0;text-decoration: none;font-family: montserrat;}body {min-height: 100vh;background-image: linear-gradient(120deg, #3498db, #8344ad);}.login-form {width: 360px;background: #f1f1f1;height: 580px;padding: 80px 40px;border-radius: 10px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);}.login-form h1 {text-align: center;margin-bottom: 60px;}.txtb {border-bottom: 2px solid #adadad;position: relative;margin: 30px 0;}.txtb input {font-size: 15px;color: #333;border: none;width: 100%;outline: none;background: none;padding: 0 5px;height: 40px;}.txtb span::before {content: attr(data-placeholder);position: absolute;top: 50%;left: 5px;color: #adadad;transform: translateY(-50%);z-index: -1;transition: .5s;}.txtb span::after {content: '';position: absolute;width: 0%;height: 0%;background: linear-gradient(120deg, #3498db, #8e44ad);transition: .5s;}.focus+span::before {top: -5px;}.focus+span::after {width: 100%;}.logbtn {display: block;width: 100%;height: 50px;border: none;background: linear-gradient(120deg, #3498db, #8e44ad, #3498db);background-size: 200%;color: #fff;outline: none;cursor: pointer;transition: .5s;}.logbtn:hover {background-position: right;}.bottom-text {margin-top: 60px;text-align: center;font-size: 13px;}</style>
</head>
<body><!-- <form action="/datail/" method="post"><input type="text" name="username"><input type="password" name="password"><input type="submit" value="登录"><a href="admin_add_user.html"><input type="button" value="注册"></a></form>--><form action="/datail/" method="post" class="login-form"><h1>欢迎来到音乐</h1><div class="txtb"><input type="text" name="username"><span data-placeholder="Username"></span></div><div class="txtb"><input type="password" name="password"><span data-placeholder="Password"></span></div><input type="submit" class="logbtn" value="登录"><input type="reset" class="logbtn" value="重置" style=" margin-top: 10px;"><div class=" bottom-text">没有账户? <a href="admin_add_user.html">点我注册</a></div></form><script type="text/javascript">$(".txtb input").on("focus", function () {$(this).addClass("focus")});$(".txtb input").on("blur", function () {if ($(this).val() == "")$(this).removeClass("focus");});</script></body>
</html>
第二部分:注册界面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"><title>Title</title></head>
<body><nav class="navbar navbar-expand-lg navbar-light bg-light"><a class="navbar-brand" href="#">Music</a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav mr-auto"><li class="nav-item active"><a class="nav-link" href="#">我的音乐 <span class="sr-only">(current)</span></a></li><li class="nav-item"><a class="nav-link" href="#">主界面</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a><div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="#">Action</a><a class="dropdown-item" href="#">Another action</a><div class="dropdown-divider"></div><a class="dropdown-item" href="#">Something else here</a></div></li><li class="nav-item"><a class="nav-link disabled" href="#">Disabled</a></li></ul><form class="form-inline my-2 my-lg-0"><input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search"><button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button></form></div>
</nav><div class="container"><div class="row justify-content-center"><div class="row" style="align-items: baseline"><div class="card" style="width: 18rem;"><img class="card-img-top" src="https://tva1.sinaimg.cn/mw1024/006yt1Omgy1ghu6dr0paxj31b41wkkjn.jpg" alt="Card image cap"><div class="card-body"><h5 class="card-title">ID</h5><p class="card-text">在这个框内输入一个整数数字</p><a href="#" class="btn btn-primary">Go somewhere</a></div></div><div class="card" style="width: 18rem;"><img class="card-img-top" src="https://tva1.sinaimg.cn/mw1024/006yt1Omgy1ghu6dr0paxj31b41wkkjn.jpg" alt="Card image cap"><div class="card-body"><h5 class="card-title">music</h5><p class="card-text">数据源于爬虫爬取网易云数据</p><a href="#" class="btn btn-primary">Go somewhere</a></div></div><div class="card" style="width: 18rem; align-items: baseline"><img class="card-img-top" src="https://tva1.sinaimg.cn/mw1024/006yt1Omgy1ghu6dr0paxj31b41wkkjn.jpg" alt="Card image cap"><div class="card-body"><h5 class="card-title">前后端交互</h5><p class="card-text">本界面仅仅是添加用户</p><a href="#" class="btn btn-primary">Go somewhere</a></div></div></div></div><!--card--><div class="row justify-content-center" ><form action="/admin_add_user/" method="post"><!--<p><input name="id" /></p><p><input name="username" /></p><p><input name="password" /></p><p><input type="submit" value="submit" /></p><p><a href="index.html">返回</a></p>--><div class="form-row align-items-center"><div class="col-auto"><label class="sr-only" for="inlineFormInput">ID</label><input type="text" class="form-control mb-2" id="inlineFormInput" placeholder="ID" name="id"></div><div class="col-auto"><label class="sr-only" for="inlineFormInputGroup">Username</label><div class="input-group mb-2"><input type="text" class="form-control" id="inlineFormInputGroup" placeholder="Username" name="username"></div></div><div class="col-auto"><label class="sr-only" for="inlineFormInput">Name</label><input type="text" class="form-control mb-2" id="inlineFormInput" placeholder="Password" name="password"></div><div class="col-auto"><button type="submit" class="btn btn-primary mb-2" value="submit">Submit</button></div></div></form></div><!--表单--></div><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script><script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
第三部分:登录成功的界面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"><script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style>
table {border-collapse: collapse;
}
th, td {padding: 8px;text-align: left;border-bottom: 1px solid #ddd;
}
</style>
</head><body><!--导航栏--><nav class="navbar navbar-inverse" role="navigation" style="margin: 0px;padding: 0px"><div class="container-fluid"><div class="navbar-header"><a class="navbar-brand" href="#">白熊音乐</a></div><div><div class="navbar-header" style="padding-left: 60px"><a class="navbar-brand" href="#">发现音乐</a></div><div class="navbar-header" style="padding-left: 60px"><a class="navbar-brand" href="#">我的音乐</a></div><!--下拉列表--><ul class="nav navbar-nav navbar-right"><li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">music <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="#">注册</a></li><li><a href="#">登录</a></li><li><a href="#">网易云</a></li><li class="divider"></li><li><a href="#">退出登录</a></li><li class="divider"></li><li><a href="#">酷狗</a></li></ul></li></ul><!--登录注册--><ul class="nav navbar-nav navbar-right"><li><a href="#"><span class="glyphicon glyphicon-user"></span> 注册</a></li><li><a href="#"><span class="glyphicon glyphicon-log-in"></span> 登录</a></li></ul><!--搜索按钮--><form class="navbar-form navbar-nav navbar-right" role="search"><div class="form-group"><input type="text" class="form-control" placeholder="Search"></div><button type="submit" class="btn btn-default">查找音乐</button></form></div></div></nav><!--轮播图--><div id="myCarousel" class="carousel slide" style="margin-top: 0"><!-- 轮播(Carousel)指标<ol class="carousel-indicators"><li data-target="#myCarousel" data-slide-to="0" class="active"></li><li data-target="#myCarousel" data-slide-to="1"></li><li data-target="#myCarousel" data-slide-to="2"></li></ol>轮播(Carousel)项目 --><div class="carousel-inner" ><div class="item active"><img src="https://tvax1.sinaimg.cn/mw1024/006yt1Omgy1gig64nuyi3j317r17rnpd.jpg" alt="First slide" style="width: 100%;height: 400px"></div><div class="item"><img src="https://tva4.sinaimg.cn/mw1024/006yt1Omgy1gig65kwln3j32o7220kjo.jpg" alt="Second slide" style="width: 100%;height: 400px"></div><div class="item"><img src="https://tva3.sinaimg.cn/mw1024/006yt1Omgy1gig653msc2j312n12hb29.jpg" alt="Third slide" style="width: 100%;height: 400px"></div></div><!-- 轮播(Carousel)导航 --><a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span><span class="sr-only">Previous</span></a><a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span><span class="sr-only">Next</span></a>
</div><!--内容--><table class="table table-hover"><thead><tr class="success"><th>id</th><th>音乐名称</th><th>音乐链接</th></tr></thead><tbody>{% for item in li %}<tr class="danger"><td>{{ item.id }}</td><td>{{ item.name }}</td><td><a href="{{ item.link }}">{{item.link}}</a></td></tr>{% endfor %}</tbody></table><div class="jumbotron text-center" style="margin-bottom:0"><p>站点音乐来自网易云</p></div></body>
</html>
这下面的部分是前后端交互的部分
{% for item in li %}<tr class="danger"><td>{{ item.id }}</td><td>{{ item.name }}</td><td><a href="{{ item.link }}">{{item.link}}</a></td></tr>{% endfor %}
最后放上我的项目链接,如果你安装了python并且使用了pycharm或者vs code 安装了django框架,直接拿去用吧
链接:https://pan.baidu.com/s/1ReoQD5HZKORMl6JDBWyyNQ
提取码:1234
django项目 网易云音乐相关推荐
- [项目] 网易云音乐项目总结
最近准备把之前做的一个仿网易云音乐的自制音乐网页播放器项目做一个总结. 相关功能如下: 通过后台页面上传歌曲.编辑歌曲功能. 前端页面自动更新播放热度高的歌曲 在线听歌.查看歌词.且配有相应的播放动画 ...
- 前端项目网易云音乐移动端经验总结
HTML: audio标签控制音乐播放,有个原生play()方法控制播放 marquee这个标签可以实现滑动,类似于动画一样 marquee(文字滚动)标签_别The Crossing的博客-CSDN ...
- Vue3+node.js网易云音乐实战项目(五)
推荐歌单详细页面顶部 1.推荐歌单详细页面 1.1.导航条和背景 1.2.头像和简介 1.3.头部完整代码 1.4.链接 实现效果 1.推荐歌单详细页面 1.1.导航条和背景 推荐歌单页面做好后,我们 ...
- Vue3+node.js网易云音乐实战项目(三)
页面 一.头部导航栏布局 二.轮播图的实现 三.请求网易的banner图 四 链接 一.头部导航栏布局 首先我们看最上面这里的布局,大致可分为三个模块,顶部左边,顶部中间,顶部右边 那么我们在comp ...
- 网易云音乐等级快速升级 - 每天打卡听歌300首
今天在GitHub上看到一个非常有趣的项目 网易云音乐升级 我只能说这位朋友不仅代码写得好,文档也是一流,写的非常详尽,而且针对不同的人群不同的方法真的是太用心了
- Github高星项目!用Python开发的一个网易云音乐
最近在逛Github发现了一个非常有趣的库musicbox,是用纯Python打造的,收获了8300颗星.Python语言简单易学,好玩有趣,身边越来越多的小伙伴都开始学习Python.她的魅力非常大 ...
- Vue2 - 网易云音乐项目笔记(基于Vant UI组件库)
目录 一.项目技术 二.准备工作 1.初始化Vue项目 2.配置Vant UI组件库 3.下载并使用vue-router库 4.接口API 5.postcss插件 三.分析页面实现功能 1.路由页面准 ...
- Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据、人工智能、机器学习项目开发
Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据.人工智能.机器学习项目开发Mus ...
- [项目记录]用vue-electron搭建pc网易云音乐程序(2)——搭建基本页面
项目创建好,可以开始写静态页面了,在动手之前,先粗略观察一下官方的网易云音乐程序样式,看哪些模块是可以重复利用的,以提高开发效率. 像tabbar,模块标题,一些电台.mv模块都是可以复用的. 再就是 ...
最新文章
- STL笔记(5)条款49:学习破解有关STL的编译器诊断信息
- pod中mysql配置文件修改_通过configmap更新k8s里的mysql配置文件
- DELL电脑自检代码错误提示含义
- tensorflow没有代码提示的问题
- 他是浙大 19 岁大一新生,三个月斩获 WWDC 19 奖学金!
- HTTP GET/CONNECT代理区别
- php环境搭建及入门
- PWM整流器仿真。 在simulink中搭建了PWM整流器,采用电压电流双闭环控制,实现了网侧电压与电流同相位
- Sensor--Gyro工作原理
- 深度学习究竟怎么入门?两位Google大神掀起剑气之争
- 面试官常问:为什么 MongoDB 索引选择B-树,而 Mysql 索引选择B+树(精干总结)
- 数字化转型 — 新能源汽车 — 产品设计与研发流程
- html5 启动qq,web启动本地QQ程序
- leetcode:一道清华考研专业课算法题
- 要知道喝水的14个惊人真相 - 生活至上,美容至尚!
- 【沧海拾昧】用MATLAB画一张简单的图
- 趣头条自媒体怎么玩可以月入一万
- 酷科技 | 天空画布
- 不是所有人都适合职场
- 3DMAX中法线对齐的使用