python基于深度学习的短视频内容理解与推荐系统(源码+vue+hadoop+hive+部署文档+可视化大屏展示等)
💗博主介绍:✨全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,专注于Java/Python/小程序app/深度学习等计算机设计,主要对象是咱们计算机相关专业的大学生,希望您们都能前途无量!✨💗👇🏻 精彩专栏 推荐订阅👇🏻计算机毕业设计设计精品实战案例✅随着现代短视频的快速发展,短视频内容理解与推荐系统已成为人们业余生活的需求。该平台采用Python技术和django
收藏关注不迷路!!
🌟文末获取源码+数据库🌟
感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
前言
💗博主介绍:✨全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,专注于Java/Python/小程序app/深度学习等计算机设计,主要对象是咱们计算机相关专业的大学生,希望您们都能前途无量!✨💗
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计设计精品实战案例✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
详细视频演示
文章底部名片,联系我看更详细的演示视频
项目介绍
随着现代短视频的快速发展,短视频内容理解与推荐系统已成为人们业余生活的需求。该平台采用Python技术和django搭建系统框架,后台使用MySQL数据库进行信息管理;通过用户管理、短视频管理、交流论坛、系统管理、个人资料等功能,为短视频内容理解与推荐系统管理提供了一个全面的短视频管理解决方案。短视频内容理解与推荐系统正在成为短视频界的一股革命力量。它通过分析用户的短视频品味,为用户提供个性化的视频推荐,引领我们进入一个全新的短视频世界。它不仅改变了我们的短视频消费方式,还为短视频产业带来了无限的可能性。
技术介绍
开发语言:Python
python框架:Django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
开发软件:PyCharm/vs code
前端框架:vue.js
功能介绍
短视频内容理解与推荐系统综合网络空间开发设计要求。目的是将传统管理方式转换为在网上管理,完成短视频内容理解与推荐系统的方便快捷、安全性高、交易规范做了保障,目标明确。短视频内容理解与推荐系统可以将功能划分为管理员功能和用户功能;
(1)管理员关键功能包含用户管理、短视频管理、交流论坛、系统管理、个人资料等进行管理。
(2)用户关键功能包含个人中心、修改密码、我的发布、我的收藏等进行管理。
核心代码
# 数据爬取文件
import scrapy
import pymysql
import pymssql
from ..items import LvyoujingdianItem
import time
import re
import random
import platform
import json
import os
import urllib
from urllib.parse import urlparse
import requests
import emoji
# 旅游景点
class LvyoujingdianSpider(scrapy.Spider):
name = 'lvyoujingdianSpider'
spiderUrl = 'https://you.ctrip.com/sight/lanzhou231/s0-p{}.html'
start_urls = spiderUrl.split(";")
protocol = ''
hostname = ''
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def start_requests(self):
plat = platform.system().lower()
if plat == 'linux' or plat == 'windows':
connect = self.db_connect()
cursor = connect.cursor()
if self.table_exists(cursor, '5295r_lvyoujingdian') == 1:
cursor.close()
connect.close()
self.temp_data()
return
pageNum = 1 + 1
for url in self.start_urls:
if '{}' in url:
for page in range(1, pageNum):
next_link = url.format(page)
yield scrapy.Request(
url=next_link,
callback=self.parse
)
else:
yield scrapy.Request(
url=url,
callback=self.parse
)
# 列表解析
def parse(self, response):
_url = urlparse(self.spiderUrl)
self.protocol = _url.scheme
self.hostname = _url.netloc
plat = platform.system().lower()
if plat == 'windows_bak':
pass
elif plat == 'linux' or plat == 'windows':
connect = self.db_connect()
cursor = connect.cursor()
if self.table_exists(cursor, '5295r_lvyoujingdian') == 1:
cursor.close()
connect.close()
self.temp_data()
return
list = response.css('div.list_wide_mod2 div.list_mod2')
for item in list:
fields = LvyoujingdianItem()
if '(.*?)' in '''dt a::attr(href)''':
fields["laiyuan"] = re.findall(r'''dt a::attr(href)''', response.text, re.DOTALL)[0].strip()
else:
fields["laiyuan"] = self.remove_html(item.css('dt a::attr(href)').extract_first())
if '(.*?)' in '''div.leftimg a img::attr(src)''':
fields["fengmian"] = re.findall(r'''div.leftimg a img::attr(src)''', response.text, re.DOTALL)[0].strip()
else:
fields["fengmian"] = self.remove_html(item.css('div.leftimg a img::attr(src)').extract_first())
if '(.*?)' in '''div.rdetailbox dl dt a::text''':
fields["biaoti"] = re.findall(r'''div.rdetailbox dl dt a::text''', response.text, re.DOTALL)[0].strip()
else:
fields["biaoti"] = self.remove_html(item.css('div.rdetailbox dl dt a::text').extract_first())
if '(.*?)' in '''b.hot_score_number::text''':
fields["redu"] = re.findall(r'''b.hot_score_number::text''', response.text, re.DOTALL)[0].strip()
else:
fields["redu"] = self.remove_html(item.css('b.hot_score_number::text').extract_first())
if '(.*?)' in '''dd.ellipsis::text''':
fields["dizhi"] = re.findall(r'''dd.ellipsis::text''', response.text, re.DOTALL)[0].strip()
else:
fields["dizhi"] = self.remove_html(item.css('dd.ellipsis::text').extract_first())
if '(.*?)' in '''a.score strong::text''':
fields["pingfen"] = re.findall(r'''a.score strong::text''', response.text, re.DOTALL)[0].strip()
else:
fields["pingfen"] = self.remove_html(item.css('a.score strong::text').extract_first())
if '(.*?)' in '''a.recomment::text''':
fields["pinglun"] = re.findall(r'''a.recomment::text''', response.text, re.DOTALL)[0].strip()
else:
fields["pinglun"] = self.remove_html(item.css('a.recomment::text').extract_first())
if '(.*?)' in '''p[class="bottomcomment ellipsis open_popupbox_a"]''':
fields["dianping"] = re.findall(r'''p[class="bottomcomment ellipsis open_popupbox_a"]''', response.text, re.DOTALL)[0].strip()
else:
fields["dianping"] = self.remove_html(item.css('p[class="bottomcomment ellipsis open_popupbox_a"]').extract_first())
detailUrlRule = item.css('dt a::attr(href)').extract_first()
if self.protocol in detailUrlRule:
pass
elif detailUrlRule.startswith('//'):
detailUrlRule = self.protocol + ':' + detailUrlRule
else:
detailUrlRule = self.protocol + '://' + self.hostname + detailUrlRule
fields["laiyuan"] = detailUrlRule
yield scrapy.Request(url=detailUrlRule, meta={'fields': fields}, callback=self.detail_parse, dont_filter=True)
# 详情解析
def detail_parse(self, response):
fields = response.meta['fields']
try:
if '(.*?)' in '''<div class="baseInfoItem"><p class="baseInfoTitle">官方电话</p><p class="baseInfoText">(.*?)</p></div>''':
fields["gfdh"] = re.findall(r'''<div class="baseInfoItem"><p class="baseInfoTitle">官方电话</p><p class="baseInfoText">(.*?)</p></div>''', response.text, re.S)[0].strip()
else:
if 'gfdh' != 'xiangqing' and 'gfdh' != 'detail' and 'gfdh' != 'pinglun' and 'gfdh' != 'zuofa':
fields["gfdh"] = self.remove_html(response.css('''<div class="baseInfoItem"><p class="baseInfoTitle">官方电话</p><p class="baseInfoText">(.*?)</p></div>''').extract_first())
else:
fields["gfdh"] = emoji.demojize(response.css('''<div class="baseInfoItem"><p class="baseInfoTitle">官方电话</p><p class="baseInfoText">(.*?)</p></div>''').extract_first())
except:
pass
try:
if '(.*?)' in '''div[class="detailModule normalModule"]''':
fields["detail"] = re.findall(r'''div[class="detailModule normalModule"]''', response.text, re.S)[0].strip()
else:
if 'detail' != 'xiangqing' and 'detail' != 'detail' and 'detail' != 'pinglun' and 'detail' != 'zuofa':
fields["detail"] = self.remove_html(response.css('''div[class="detailModule normalModule"]''').extract_first())
else:
fields["detail"] = emoji.demojize(response.css('''div[class="detailModule normalModule"]''').extract_first())
except:
pass
return fields
# 去除多余html标签
def remove_html(self, html):
if html == None:
return ''
pattern = re.compile(r'<[^>]+>', re.S)
return pattern.sub('', html).strip()
# 数据库连接
def db_connect(self):
type = self.settings.get('TYPE', 'mysql')
host = self.settings.get('HOST', 'localhost')
port = int(self.settings.get('PORT', 3306))
user = self.settings.get('USER', 'root')
password = self.settings.get('PASSWORD', '123456')
try:
database = self.databaseName
except:
database = self.settings.get('DATABASE', '')
if type == 'mysql':
connect = pymysql.connect(host=host, port=port, db=database, user=user, passwd=password, charset='utf8')
else:
connect = pymssql.connect(host=host, user=user, password=password, database=database)
return connect
# 断表是否存在
def table_exists(self, cursor, table_name):
cursor.execute("show tables;")
tables = [cursor.fetchall()]
table_list = re.findall('(\'.*?\')',str(tables))
table_list = [re.sub("'",'',each) for each in table_list]
if table_name in table_list:
return 1
else:
return 0
# 数据缓存源
def temp_data(self):
connect = self.db_connect()
cursor = connect.cursor()
sql = '''
insert into `lvyoujingdian`(
id
,laiyuan
,fengmian
,biaoti
,redu
,dizhi
,pingfen
,pinglun
,dianping
,gfdh
,detail
)
select
id
,laiyuan
,fengmian
,biaoti
,redu
,dizhi
,pingfen
,pinglun
,dianping
,gfdh
,detail
from `5295r_lvyoujingdian`
where(not exists (select
id
,laiyuan
,fengmian
,biaoti
,redu
,dizhi
,pingfen
,pinglun
,dianping
,gfdh
,detail
from `lvyoujingdian` where
`lvyoujingdian`.id=`5295r_lvyoujingdian`.id
))
limit {0}
'''.format(random.randint(10,15))
cursor.execute(sql)
connect.commit()
connect.close()
数据库参考
--
-- Table structure for table `forum`
--
DROP TABLE IF EXISTS `forum`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `forum` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`title` varchar(200) DEFAULT NULL COMMENT '帖子标题',
`content` longtext NOT NULL COMMENT '帖子内容',
`parentid` bigint(20) DEFAULT NULL COMMENT '父节点id',
`userid` bigint(20) NOT NULL COMMENT '用户id',
`username` varchar(200) DEFAULT NULL COMMENT '用户名',
`avatarurl` longtext COMMENT '头像',
`isdone` varchar(200) DEFAULT NULL COMMENT '状态',
`istop` int(11) DEFAULT '0' COMMENT '是否置顶',
`toptime` datetime DEFAULT NULL COMMENT '置顶时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COMMENT='交流论坛';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `forum`
--
LOCK TABLES `forum` WRITE;
/*!40000 ALTER TABLE `forum` DISABLE KEYS */;
INSERT INTO `forum` VALUES (31,'2024-04-11 08:44:24','帖子标题1','帖子内容1',0,1,'用户名1','upload/forum_avatarurl1.jpg,upload/forum_avatarurl2.jpg,upload/forum_avatarurl3.jpg','开放',0,'2024-04-11 16:44:24'),(32,'2024-04-11 08:44:24','帖子标题2','帖子内容2',0,2,'用户名2','upload/forum_avatarurl2.jpg,upload/forum_avatarurl3.jpg,upload/forum_avatarurl4.jpg','开放',0,'2024-04-11 16:44:24'),(33,'2024-04-11 08:44:24','帖子标题3','帖子内容3',0,3,'用户名3','upload/forum_avatarurl3.jpg,upload/forum_avatarurl4.jpg,upload/forum_avatarurl5.jpg','开放',0,'2024-04-11 16:44:24'),(34,'2024-04-11 08:44:24','帖子标题4','帖子内容4',0,4,'用户名4','upload/forum_avatarurl4.jpg,upload/forum_avatarurl5.jpg,upload/forum_avatarurl6.jpg','开放',0,'2024-04-11 16:44:24'),(35,'2024-04-11 08:44:24','帖子标题5','帖子内容5',0,5,'用户名5','upload/forum_avatarurl5.jpg,upload/forum_avatarurl6.jpg,upload/forum_avatarurl7.jpg','开放',0,'2024-04-11 16:44:24'),(36,'2024-04-11 08:44:24','帖子标题6','帖子内容6',0,6,'用户名6','upload/forum_avatarurl6.jpg,upload/forum_avatarurl7.jpg,upload/forum_avatarurl8.jpg','开放',0,'2024-04-11 16:44:24'),(37,'2024-04-11 08:44:24','帖子标题7','帖子内容7',0,7,'用户名7','upload/forum_avatarurl7.jpg,upload/forum_avatarurl8.jpg,upload/forum_avatarurl9.jpg','开放',0,'2024-04-11 16:44:24'),(38,'2024-04-11 08:44:24','帖子标题8','帖子内容8',0,8,'用户名8','upload/forum_avatarurl8.jpg,upload/forum_avatarurl9.jpg,upload/forum_avatarurl10.jpg','开放',0,'2024-04-11 16:44:24');
/*!40000 ALTER TABLE `forum` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `news`
--
DROP TABLE IF EXISTS `news`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `news` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`title` varchar(200) NOT NULL COMMENT '标题',
`introduction` longtext COMMENT '简介',
`typename` varchar(200) DEFAULT NULL COMMENT '分类名称',
`name` varchar(200) DEFAULT NULL COMMENT '发布人',
`headportrait` longtext COMMENT '头像',
`clicknum` int(11) DEFAULT '0' COMMENT '点击次数',
`clicktime` datetime DEFAULT NULL COMMENT '最近点击时间',
`thumbsupnum` int(11) DEFAULT '0' COMMENT '赞',
`crazilynum` int(11) DEFAULT '0' COMMENT '踩',
`storeupnum` int(11) DEFAULT '0' COMMENT '收藏数',
`picture` longtext NOT NULL COMMENT '图片',
`content` longtext NOT NULL COMMENT '内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='通知公告';
/*!40101 SET character_set_client = @saved_cs_client */;
系统效果图
文章目录
目 录
第一章 概述 1
1.1 研究背景与意义 1
1.2国内外发展现状 1
1.3 研究内容 2
1.4本文的结构 2
第二章 开发工具及技术介绍 3
2.1 Python语言 3
2.2 Django框架 3
2.3 MySQL数据库 3
2.4 协同过滤算法 3
2.5 vue介绍 4
2.6 B/S架构 4
2.7 Hadoop介绍 4
2.8 Scrapy介绍 4
第三章 系统分析 1
3.1功能需求分析 1
3.2系统可行性分析 1
3.2.1技术可行性 1
3.2.2 经济可行性 1
3.2.3社会可行性 1
3.3 系统用例分析 2
3.4系统流程分析 2
3.4.1 登录流程图 2
3.4.2 添加新用户流程图 3
第四章 系统概要设计 5
4.1系统设计原理 5
4.2功能模块设计 5
4.3 数据库设计 5
4.3.1数据库设计原则 5
4.3.2数据库E-R图设计 6
4.3.3数据库表结构设计 6
第五章 系统功能实现 12
5.1系统前台功能实现 12
5.1.1首页功能实现 12
5.1.2个人中心 13
5.2管理员功能实现 14
第六章 系统测试 20
6.1系统测试的目的 20
6.2软件测试过程 20
6.3系统测试用例 20
结 论 22
致 谢 23
参考文献 24
源码获取
下方名片联系我即可!!
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
更多推荐
所有评论(0)