基于Python+django影片数据爬取与数据分析设计与实现

news2024/12/24 21:25:13

目录

一、 前言介绍:

二 、功能设计:

三、功能实现:

系统登录实现

管理员实现

用户模块实现

四、库表设计:

五、关键代码:

六、论文参考:

七、其他案例:

八、源码获取:


一、 前言介绍:

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,通过线上管理影片数据爬取与数据分析也就相继涌现。与此同时,人们开始接受方便的生活方式,他们不仅希望页面简单大方,还希望操作方便,可以快速锁定他们需要的影片数据爬取与数据分析方式。基于这种情况,我们需要这样一个界面简单大方、功能齐全的系统来解决用户问题,满足用户需求。

课题主要分为两大模块:即管理员模块和用户模块,主要功能包括系统首页、个人中心、用户管理、电影管理、系统管理等;

二 、功能设计:

影片数据爬取与数据分析分为两个部分,即管理员和用户。该系统是根据用户的实际需求开发的,贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限,其次是用户。管理员一般负责整个系统的运行维护和总体协调。

系统结构如图所示。

图系统结构图

三、功能实现:

系统登录实现

系统登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;系统登录界面如图5-1所示:

图5-1 系统登录界面

用户注册:在登录页面注册按钮,进入用户注册界面,输入用户信息点击注册进行用户注册操作,用户注册界面如图5-2所示:

图5-2 用户注册界面

管理员实现

管理员进入主页面,主要功能包括对系统首页、个人中心、用户管理、电影管理、系统管理等进行操作。管理员主界面如图5-3所示:

图5-3 管理员主界面

管理员点击用户管理。进入用户页面输入用户名可以查询,新增或删除用户列表,并根据需要对用户信息进行查看详情,修改或删除操作。如图5-4所示:

图5-4用户管理界面

管理员点击电影管理。进入电影页面可以查询,新增,删除或爬取数据电影列表,并根据需要对电影信息进行查看详情,修改或删除操作。如图5-5所示:

图5-5电影管理界面

管理员点击系统管理。进入系统简介页面输入标题可以查询系统简介列表,并根据需要对系统简介信息进行查看详情或修改操作。如图5-6所示:

图5-6系统管理界面

管理员点击跳转到看板。进入看板页面可以查看类型、评分、地区、语言、电影总数和导演等详细数据分析。如图5-7所示:

图5-7数据分析界面

用户模块实现

用户进入主页面,主要功能包括对系统首页、个人中心、电影管理等进行操作。用户主界面如图5-8所示:

图5-8 用户主界面

用户点击电影管理。进入电影页面可以查询或爬取数据电影列表,并根据需要对电影信息进行查看详情操作。如图5-9所示:

图5-9电影管理界面

四、库表设计:

​概念设计是将整体分为在地面上表达出来的单个个体。E-R图形象的连接了实体模型和概念模型。因此,E-R图需要根据数据库表和表字段进行合理设计,表达的概念知识点用图形描述,可以直观地让相应人员清楚,并分解整个E-R图[13]。我们通常表达不清晰没有概念的东西。但是通过E-R之间的联系,E-R模型法是对这种模糊概念的事务最简单、最常用的设计方法。

(1) 用户实体属性图如下图4-2所示。

图4-2用户实体属性图

(2) 电影实体属性图如下图所示。

图4-3电影实体属性图

(3) 系统简介实体属性图如下图4-4所示。

图系统简介实体属性图

五、关键代码:

# coding:utf-8
from configparser import ConfigParser
import logging, sys, os
import pymysql

from util.configread import config_read


class Create(object):
    def __init__(self, dbtype, host, port, user, passwd, dbName, charset):
        self.dbtype, self.host, self.port, self.user, self.passwd, self.dbName, self.charset = dbtype, host, port, user, passwd, dbName, charset
        self.conn = pymysql.connect(host=self.host, user=self.user, passwd=self.passwd, port=self.port,
                                    charset=self.charset)
        self.cur = self.conn.cursor()

    def create_db(self, sql):
        self.cur.execute(sql)
        self.conn.commit()

    def create_tables(self, sqls):
        use_sql = '''use `{}`;'''.format(self.dbName)
        self.cur.execute(use_sql)

        for sql in sqls:
            self.cur.execute(sql)
            self.conn.commit()

    def conn_close(self):
        self.cur.close()
        self.conn.close()

# 管道文件

import pymysql
import pymssql
from itemadapter import ItemAdapter

class SpiderPipeline(object):

    # 打开数据库
    def open_spider(self, spider):
        type = spider.settings.get('TYPE', 'mysql')
        host = spider.settings.get('HOST', 'localhost')
        port = int(spider.settings.get('PORT', 3306))
        user = spider.settings.get('USER', 'root')
        password = spider.settings.get('PASSWORD', '123456')

        try:
            database = spider.databaseName
        except:
            database = spider.settings.get('DATABASE', '')

        if type == 'mysql':
            self.connect = pymysql.connect(host=host, port=port, db=database, user=user, passwd=password, charset='utf8')
        else:
            self.connect = pymssql.connect(host=host, user=user, password=password, database=database)
            
        self.cursor = self.connect.cursor()

    # 关闭数据库
    def close_spider(self, spider):
        self.connect.close()

    # 对数据进行处理
    def process_item(self, item, spider):
        self.insert_db(item, spider.name)
        return item

    # 插入数据
    def insert_db(self, item, spiderName):
        values = tuple(item.values())
        # print(values)

        qmarks = ', '.join(['%s'] * len(item))
        cols = ', '.join(item.keys())

        sql = "INSERT INTO %s (%s) VALUES (%s)" % (spiderName.replace('Spider', ''), cols, qmarks)

        self.cursor.execute(sql, values)
        self.connect.commit()

六、论文参考:

七、其他案例:

学习资源推荐

零基础Python学习资源介绍

👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈
在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉100道Python练习题👈
检查学习结果。
在这里插入图片描述
👉面试刷题👈
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1394982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

各省快递量数据, shp+excel,2001-2021年,已实现数据可视化

基本信息. 数据名称: 各省快递量数据 数据格式: shpexcel 数据时间:2001-2021年 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1a_2001快递量/万件_2001年2a_2002快递量/万件_2002年3…

FairyGUI Day 1 导入FairyGUI

FairyGUI Unity3d引擎版本:Uinty3d 20233.2.3f1 1、从资产商店中将FairyGUI购入我的资产中,目前是免费的。 2、从我的资产中将FairyGUI导入到当前项目中。 3、我遇到的问题,我的Assets下有两个文件夹分别是Resources和Scenes,导…

AEB滤镜再破碎,安全焦虑「解不开」?

不久前,理想L7重大交通事故,再次引发了公众对AEB的热议。 根据理想汽车公布的事故视频显示,碰撞发生前3秒,车速在178km/h时驾驶员采取了制动措施,但车速大幅超出AEB(自动紧急刹车系统)的工作范…

【笔记】认识电机

认识电机 电机一些概念永磁同步电机电机的效率转矩永磁体定子和转子励磁电磁感应定律 AC Optimal Power Flow功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居…

esp32-idf eclipse 定时器的使用demo

esp32定时器的使用demo 1、介绍 ESP32芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于16位预分频器和64位自动重载功能的向上向下计数器的64位通用定时器。 2、API接口函数 创建定时器函数: esp_timer_create(); esp_err_t esp_timer_create …

P4学习(四)实验一:Basic Forwarding

目录 一.前置知识二.实验过程记录1.找到实验文件2.拓扑图3.明确实验内容4.实验初体验 三. 编写解决方案1.Parse部分1.1 Code1.2 知识点解析 2.Ingress部分2.1 Code2.2 知识点解析 3.Deparse部分3.1 Code3.2 知识点 四.实验完成测试 一.前置知识 Linux基础命令(vim)V!Model的架…

大模型多卡训练原理

背景知识 深度学习涉及大量矩阵运算,而矩阵运算可以并行计算。 一、数据并行 每张卡加载不同的数据,将计算结果合并 存在问题:每个显卡都加载了模型,浪费了一定空间 二、模型并行:适合模型特别大的情况 1、串行计算…

Java Springboot SSE如何判断客户端能否正常接收消息

目录 背景解决方案思路代码代码解释 Java反射知识点补充 背景 当新建一个 emitter 对象的时候, 它的默认超时时间是 30s. SseEmitter emitter new SseEmitter(); 但是很多情况下, 默认30s的时间太短, 需要把 emitter 对象的超时时间设置成不超时, 也就是永久有效. private …

RHEL8 Samba服务器详细配置用户模式

任务: 配置server01为samba服务器,samba服务器的/companydata/sales为共享目录,共享名为sales,里面创建测试文件test_share.tar,创建用户组sales,创建组内用户sale1,要求配置用户模式访问&#…

py爬虫入门笔记(request.get的使用)

文章目录 Day11. 了解浏览器开发者工具2. Get请求http://baidu.com3. Post请求https://fanyi.baidu.com/sug4. 肯德基小作业 Day21. 正则表达式2. 使用re模块3. 爬取豆瓣电影Top250的第一页4. 爬取豆瓣电影Top250所有的250部电影信息 Day31. xpath的使用2. 认识下载照片线程池的…

【翻译】在Qt Designer中创建主窗口(Main Windows)

原文地址:https://doc.qt.io/qt-6/designer-creating-mainwindows.html Qt Designer 可用于为不同用途创建用户界面,并为每个用户界面提供不同类型的模板。主窗口模板用于创建具有菜单栏、工具栏和停靠窗口部件的应用程序窗口。 通过打开文件菜单并选择…

工程档案数字化的意义

工程档案数字化可以提高档案管理效率、节约资源成本、保护档案安全、提高档案可持续性、提升检索与利用的便捷性,促进信息共享与合作,具有重要的意义和价值。 1. 提高档案管理效率:数字化档案可以通过电子方式进行存储、检索和共享&#xff0…

企业网盘的价值:为什么企业需要它?

企业网盘因其主打的文件管理协作功能,正好符合信息时代高速发展下企业的需要,能够帮助企业集中管理文件数据,提供便捷的文件协作服务,一跃成为近两年企业服务类产品榜单中的一匹黑马。 企业网盘真的这么好用吗?企业真…

ant-desgin的table的上移、下移

文章目录 html部分函数部分 html部分 <a-table :columns"columns" :data-source"dataList" :loading"listLoading" :pagination"false"><template #bodyCell"{ column, record, index }"><template v-if&qu…

class_10:this关键字

this关键字是指向调用对象的指针 #include <iostream> #include <iostream> using namespace std;class Car{ public://成员数据string brand; //品牌int year; //年限//构造函数名与类名相同Car(string brand,int year){cout<<"构造函数中&#…

字面量(java)

字面量类型&#xff1a; 整数类型&#xff1a;不带小数的数字&#xff0c;如666、-88 小数类型&#xff1a;带小数点的数字&#xff0c;如13.14、-5.21 字符串类型&#xff1a;用双引号引起来的内容&#xff0c;如"HelloWorld"&#xff0c;""," &q…

HCIA交换技术

VLAN的作用&#xff08;只记录MAC&#xff09;&#xff1a; 路由器和交换机协同工作&#xff0c;为了解决广播域带来的问题&#xff0c;人们引入了VLAN&#xff08;virtual local area network&#xff09;&#xff0c;即虚拟局域网技术&#xff1a;通过在交换机上部署VLAN&…

【软件测试】学习笔记-精准测试

软件测试行业从最开始的手工测试到自动化测试&#xff0c;从黑盒测试到白盒测试&#xff0c;测试理念和技术都发生了日新月异的变化。现如今&#xff0c;几乎所有的软件公司都有一套强大且复杂的自动化测试用例&#xff0c;用来夜以继日地保证产品的正确性和稳定性。 然而&…

Nginx的access_log 状态码499的问题排查

前提&#xff1a;公司的项目网站&#xff0c;运行环境是lnmp环境下 一、起因 如下图&#xff0c;网站请求超过60s(如&#xff1a;导出半年的报表数据到excel)时&#xff0c;报如下错误&#xff0c;且浏览器上没有返回值 二、发展 查找nginx和php-fpm都没有报错日志。于是先把…

万字讲解新一代分布式任务调度框架Power-job

1、简介 Power-Job 的设计目标是成为企业级的分布式任务调度平台&#xff0c;整个公司统一部署调度中心 power-job-server&#xff0c;旗下所有业务线应用只需要依赖 power-job-worker 即可接入调度中心获取任务调度与分布式计算能力。 Power-job官方网址&#xff1a;http:/…