基于Python+爬虫的家电电商数据可视化分析平台的设计与实现

💗博主介绍:✌全网粉丝15W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者,计算机毕设实战导师。目前专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌
💗主要服务内容免费功能设计、选题定题、开题报告、任务书、程序开发、论文编写和辅导、论文降重、程序讲解、答辩辅导等,欢迎咨询~
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计精品项目案例(持续更新)
🌟文末获取源码+数据库+文档🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以和学长沟通,希望帮助更多的人

一.前言

随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,电子商务系统当然也不能排除在外。而人们喜欢在网上购物,也非常适合现在的人们的购物的形式,十分的便捷。

本电商数据可视化分析平台采用的数据库是Mysql,使用django框架开发。并且在设计方面使用爬虫技术scrapy技术进行爬取电子商务信息,然后在开发语言方面使用python语言进行开发,开发功能方面分为两个角色,用户功能包含公告资讯,商品展示,在线下单,家电管理,收藏商品,评论商品,加入购物车,注册登录,在线客服,管理员功能方面包含,用户管理,商品信息管理(爬取数据),品牌管理,个人中心,系统首页 资讯管理,轮播图管理,资讯分类,在线客服,系统简介,看板包含查看词云统计,家电信息管理,价格分析,卖家统计,卖家销量统计,标签统计。


二.技术环境

开发语言:Python
python框架:django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
爬虫框架:Scrapy
大数据框架:Hadoop
开发软件:PyCharm/vs code
前端框架:vue.js


三.功能设计

用户界面层是用户与平台交互的界面,用户可以通过文本输入或语音输入与平台进行沟通和交互。用户界面层需要提供友好的界面设计,方便用户操作和获取信息。其结构设计如图所示。
在这里插入图片描述

电商数据可视化分析平台的设计的系统总体结构,包含了用户与管理员两个角色,用户方面可以查看公告新闻,查看商品,查看商品推荐,登录注册,评论,收藏商品,购买商品,查看家电信息,在线下单,在线评论,在线客服等功能模块。
在这里插入图片描述

管理员在电子商务平台的业务流程中,包含了系统的管理,用户的管理 ,商品的管理,以及看板的查看,如图所示。
在这里插入图片描述
用户功能:

  1. 公告资讯:提供最新的公告和资讯,让用户了解网站动态。
  2. 商品展示:展示各类商品,方便用户浏览和选择购买。
  3. 在线下单:用户可以直接在线下单购买商品。
  4. 家电管理:用户可以管理家中的家电设备,如查看状态、控制开关等。
  5. 收藏商品:用户可以收藏喜欢的商品,方便日后查看和购买。
  6. 评论商品:用户可以对购买过的商品进行评论和评价。
  7. 加入购物车:用户可以将喜欢的商品加入购物车方便统一结算。
  8. 注册登录:用户可以注册账号并登录,享受更多个性化服务。
  9. 在线客服:提供在线客服支持,解答用户疑问和问题。

管理员功能:

  1. 用户管理:管理员可以管理用户信息,如查看用户数据、编辑用户信息等。
  2. 商品信息管理:管理员可以管理商品信息,包括爬取数据、编辑商品信息等。
  3. 品牌管理:管理员可以管理商品品牌信息,包括添加、编辑、删除品牌信息。
  4. 个人中心:管理员可以查看个人信息和设置。
  5. 系统首页:管理员可以管理系统首页的内容,包括资讯管理、轮播图管理等。
  6. 资讯管理:管理员可以管理网站资讯内容,包括发布、编辑、删除资讯。
  7. 轮播图管理:管理员可以管理网站首页的轮播图内容,添加、编辑、删除轮播图。
  8. 资讯分类:管理员可以管理资讯的分类,方便用户浏览和查找。
  9. 在线客服:提供在线客服支持,方便管理员与用户沟通。
  10. 系统简介:管理员可以编辑系统简介和介绍。
    看板功能:
  11. 查看词云统计:展示词云统计数据,帮助用户了解热门关键词。
  12. 家电信息管理:管理家电设备信息,包括查看状态、控制开关等。
  13. 价格分析:分析商品价格数据,帮助用户了解市场行情。
  14. 卖家统计:统计卖家数据,包括销售额、订单量等。
  15. 卖家销量统计:统计卖家的销量数据,帮助卖家了解销售情况。

四.数据设计

系统需要数据库存储系统中的信息,MySQL数据库能够处理系统的信息,当考研信息爬虫与分析需要数据的时候,MySQL数据库能够取得数据交给服务端处理。MySQL数据库能够使用可视化软件操作,管理员可以在可视化软件对数据库的信息管理。
系统数据层设计包括了E-R设计,系统数据实体的设计依赖于E-R的分析和设计,通过E-R能够得到数据库表的设计,E-R能够描述系统所涉及到的实体,还能够描述系统中不同实体的联系和关系。系统总体E-R图如下所示:
在这里插入图片描述

五.部分效果展示

5.1前台用户功能实现效果

用户可在前台查看家电信息,可搜索查看家信息,还可以查看详细信息。
在这里插入图片描述

在这里插入图片描述

用户在前台点击在线客服界面,然后进行聊天,点击发送按钮,然后管理员给予回复。
在这里插入图片描述

用户在前台登录后,点击商品,可对商品进行添加到购物车,到购物车进行添加。

在这里插入图片描述

管理员查看商品后,可进行在线下单,然后进行结算,结算完成后,可进评论订单,同时也可以申请退货。
在这里插入图片描述

用户查看商品后,能够进行评论订单,然后添加评论标题和内容。
在这里插入图片描述

用户查看到商品后,在线下单时,可进行在线的充值。
在这里插入图片描述

5.2后台管理员功能实现效果

管理员可在后台进行用户信息的查看以及修改,删除等功能,方便用户的使用。

在这里插入图片描述

管理员可对商品信息,进行添加,商品名称,商品分类,品牌,图片,规格信息。
在这里插入图片描述

管理员还可以通过爬虫进行获取商品信息,然后生成数据。
在这里插入图片描述在这里插入图片描述

管理员在系统管理方面可对系统简介进行管理,例如标题,副标题,图片等信息。
在这里插入图片描述

在系统管理方面下拉菜单中有在线客服信息,可添加客服信息,然后进行留言或者回复。
在这里插入图片描述

当用户在前台进行订单的退货的申请以后,管理员可在后台进行退货审核。
在这里插入图片描述

在订单的管理中,管理员可还可以进行订单的评论内容的回复,以及评论查看。
在这里插入图片描述

5.3可视化大屏展示功能实现效果

系统看板总体展示如下所示:
在这里插入图片描述

卖家销量统计,可对卖家的数据进行分析以及统计。
在这里插入图片描述

词云的界面设计,主要进行词云的展示,通过对词云图进行评论的统计。
在这里插入图片描述

家电信息,包含了店名,标签,价格,销售量,以及卖家分析。
在这里插入图片描述

价格分析,然后折线图的统计,主要统计商品价格的折线图分析。
在这里插入图片描述

下面是标签的饼形图分析,主要是根据商品的包邮,绿色节能,根据用户搜索的关键词进行标签统计。
在这里插入图片描述

卖家统计,根据卖家销售数据进行统计分析,形成可视化的效果。
在这里插入图片描述

六.部分功能代码


import scrapy
import pymysql
import pymssql
from ..items import xiangmuItem
import time
import re
import random
import platform
import json
import os
from urllib.parse import urlparse
import requests
import emoji
class xiangmuSpider(scrapy.Spider):
    name = 'xiangmuSpider'
    spiderUrl = 'https://url网址'
    start_urls = spiderUrl.split(";")
    protocol = ''
    hostname = ''

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)


    # 列表解析
    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, 'xiangmu') == 1:
                cursor.close()
                connect.close()
                self.temp_data()
                return

        list = response.css('ul.subject-list li.subject-item')
        
        for item in list:

            fields = xiangmuItem()



            fields["laiyuan"] = self.remove_html(item.css('div.pic a.nbg::attr(href)').extract_first())
            if fields["laiyuan"].startswith('//'):
                fields["laiyuan"] = self.protocol + ':' + fields["laiyuan"]
            elif fields["laiyuan"].startswith('/'):
                fields["laiyuan"] = self.protocol + '://' + self.hostname + fields["laiyuan"]
            fields["fengmian"] = self.remove_html(item.css('div.pic a.nbg img::attr(src)').extract_first())
            fields["xiaoshuoming"] = self.remove_html(item.css('div.info h2 a::attr(title)').extract_first())

            detailUrlRule = item.css('div.pic a.nbg::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)


    # 详情解析
    def detail_parse(self, response):
        fields = response.meta['fields']

        try:
            if '(.*?)' in '''div#info span a::text''':
                fields["zuozhe"] = re.findall(r'''div#info span a::text''', response.text, re.S)[0].strip()
            else:
                if 'zuozhe' != 'xiangqing' and 'zuozhe' != 'detail' and 'zuozhe' != 'pinglun' and 'zuozhe' != 'zuofa':
                    fields["zuozhe"] = self.remove_html(response.css('''div#info span a::text''').extract_first())
                else:
                    fields["zuozhe"] = emoji.demojize(response.css('''div#info span a::text''').extract_first())
        except:
            pass
 # 去除多余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


为什么选择我们

大学毕业那年,曾经有幸协助指导老师做过毕业设计课题分类、论文初选(查看论文的格式)、代码刻录等打杂的事情,也帮助过同界N多同学完成过毕业设计工作,毕业后在一家互联网大厂工作8年,先后从事Java前后端开发、系统架构设计等方面的工作,有丰富的编程能力和水平,也在工作之余指导过别人完成过一些毕业设计的工作。2016年至今,团队已指导上万名学生顺利通过毕业答辩,目前是csdn特邀作者、CSDN全栈领域优质创作者,博客之星、掘金/华为云/B站/知乎等平台优质作者,计算机毕设实战导师,专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎咨询~✌

最后

💕💕
最新计算机毕业设计选题篇-选题推荐
小程序毕业设计精品项目案例-200套
Java毕业设计精品项目案例-200套
Python毕业设计精品项目案例-200套
大数据毕业设计精品项目案例-200套
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一点毕设

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值