大数据毕业设计:Python京东商品数据采集分析可视化系统(附源码)✅

184 篇文章 50 订阅
178 篇文章 9 订阅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
python3语言、Django框架、numpy、matplotlib库、HTML
requests网络爬虫、采集京东商品数据、后台数据管理、MySQL/sqlite数据库

Django和requests可以被用来创建一个京东商品销售数据分析可视化系统。

首先,使用requests库来获取京东的商品销售数据。可以通过京东的API或者爬取京东网站来获取数据。使用requests库发送HTTP请求并解析返回的数据。

接下来,使用Django框架来创建一个Web应用。Django是一个强大的Python Web框架,提供了一套完整的开发工具和模板系统。它可以用来创建一个用户界面,用于展示和分析京东商品销售数据。

在Django应用中,可以创建一个数据模型来存储京东商品的销售数据。可以定义商品的名称、销售数量、销售额等字段。然后使用Django的数据库迁移工具来创建数据库表。

2、项目界面

(1)商品销售数据概况

在这里插入图片描述

(2)商品销售数据
在这里插入图片描述

(3)商品数据可视化

在这里插入图片描述

(4)商品数据可视化2

在这里插入图片描述

(5)后台数据管理

在这里插入图片描述

(6)注册登录

在这里插入图片描述
(7)数据采集

在这里插入图片描述

3、项目说明

Django和requests可以被用来创建一个京东商品销售数据分析可视化系统。

首先,使用requests库来获取京东的商品销售数据。可以通过京东的API或者爬取京东网站来获取数据。使用requests库发送HTTP请求并解析返回的数据。

接下来,使用Django框架来创建一个Web应用。Django是一个强大的Python Web框架,提供了一套完整的开发工具和模板系统。它可以用来创建一个用户界面,用于展示和分析京东商品销售数据。

在Django应用中,可以创建一个数据模型来存储京东商品的销售数据。可以定义商品的名称、销售数量、销售额等字段。然后使用Django的数据库迁移工具来创建数据库表。

接下来,可以创建一个视图函数来处理用户请求。视图函数可以从数据库中获取商品销售数据,并对数据进行分析和处理。可以使用Python的数据分析库(如pandas)来进行数据处理和分析。可以计算商品的销售总量、销售额,计算不同商品的销售排名等。

最后,可以使用Django的模板系统来创建一个用户界面,用于展示分析结果。可以使用图表库(如matplotlib、plotly)来创建图表,展示商品销售数据的趋势、排名等。

通过这个系统,用户可以通过浏览器访问网页,输入关键词或选择商品分类来获取京东的商品销售数据,并通过图表和数据分析来了解商品的销售情况和趋势。

4、核心代码


from django.shortcuts import render,HttpResponse,reverse,redirect
from django.contrib.auth.decorators import login_required
from Electronics import models
from django.db.models import Q
from django.shortcuts import get_object_or_404,HttpResponseRedirect
import json
import random
# from .xietong import UserCf

# Create your views here.


@login_required
def index(request):
    if request.method == 'GET':
        datas = models.XinXi.objects.all().order_by('-id')[:10]
        return render(request,r"projects\table_s.html",locals())

@login_required
def user_profile(request):
    if request.method == 'GET':
        return render(request,'projects/user-profile.html',locals())

@login_required
def update_user(request):
    if request.method   == 'GET':
        data = models.Users.objects.get(username=request.user.username)
        return render(request,'projects/form_validations.html',locals())
    elif request.method == 'POST':
        datas = models.Users.objects.get(username=request.user.username)
        error = {}
        data = request.POST
        email = data.get('email','')
        if email != '' and '@' in str(email):
            email = email
        else:
            error['email'] = '邮箱格式错误'
        age = data.get('age','')
        try:
            int(age)
            if age != '' and 0 < int(age) and int(age) < 120:
                age = age
            else:
                raise Exception('年龄错误')
        except:
            error['age'] = '年龄错误'
        set = data.get('set','')
        if set != '' and str(set) in ['男','女']:
            set = set
        else:
            error['set'] = '性别格式错误'
        if error != {}:
            return render(request,'projects/form_validations.html',context={'data':datas,'error':error})
        else:
            models.Users.objects.filter(username=request.user.username).update(email=email,age=age,set=set)
            user = request.user
            return render(request, 'projects/user-profile.html', locals())



@login_required
def select_all(request):
    if request.method == 'POST':
        data = request.POST.get('projects_name', '')
        if data == '':
            datas = models.XinXi.objects.all().order_by('-id')[:10]
        elif data == 'all':
            datas = models.XinXi.objects.all()
        else:
            datas = models.XinXi.objects.filter(Q(name__icontains=data)|Q(shopname__icontains=data)|Q(pinpai__icontains=data)|Q(xinghao__icontains=data)).order_by('-count')
        return render(request,'projects/table_s.html',context={'datas':datas})

import os
import subprocess
@login_required
def spiders(request):
    if request.user.is_superuser:
        paths = os.path.dirname(os.path.abspath(__file__)) + os.sep + 'spider.py'
        cmd = "python " + paths
        print(cmd)
        res = subprocess.Popen(cmd,shell=True)
        dicts = {
            "state": True,
            "content": "启动成功 ",
        }
        return HttpResponse(json.dumps(dicts))

@login_required
def fenxi(request):
    if request.method == 'GET':
        datas = models.XinXi.objects.all()
        num1 = len(models.XinXi.objects.filter(Q(price__gt=0) & Q(price__lte=1000)))
        num2 = len(models.XinXi.objects.filter(Q(price__gt=1000) & Q(price__lte=2000)))
        num3 = len(models.XinXi.objects.filter(Q(price__gt=2000) & Q(price__lte=3000)))
        num4 = len(models.XinXi.objects.filter(Q(price__gt=3000) & Q(price__lte=4000)))
        num5 = len(models.XinXi.objects.filter(Q(price__gt=4000) & Q(price__lte=100000)))
        chaping_datas = models.XinXi.objects.all().order_by('-chaping')[:5]
        haoping_datas = models.XinXi.objects.all().order_by('haoping')[:5]

        return render(request,'projects/fenxi.html',locals())

@login_required
def spiders1(request):
    if request.user.is_superuser:
        paths = os.path.dirname(os.path.abspath(__file__)) + os.sep + 'fenxi.py'
        cmd = "python " + paths
        print(cmd)
        res = subprocess.Popen(cmd,shell=True)
        dicts = {
            "state": True,
            "content": "启动成功 ",
        }
        return HttpResponse(json.dumps(dicts))

@login_required
def item(request,id):
    if request.method == 'GET':
        data = get_object_or_404(models.XinXi,pk=id)

        datas = models.DianZan.objects.all()
        dicts = {}
        for dat1 in datas:
            if dicts.get(dat1.user.username, '') == '':
                dicts[dat1.user.username] = {}
                dicts[dat1.user.username][dat1.xinxi.id] = dat1.xinxi.avgScore
            else:
                dicts[dat1.user.username][dat1.xinxi.id] = dat1.xinxi.avgScore
        print(dicts)
        try:
            userCf = UserCf(data=dicts)
            recommandList=userCf.recomand(request.user.username, 2)
            # # print("最终推荐:%s"%recommandList)
            r = userCf.recommend(request.user.username)
            datas = []
            for rs in r:
                datas.append(get_object_or_404(models.XinXi,pk=rs[0]))
        except:
            datas = models.XinXi.objects.all().order_by('-avgScore')[:3]

        return render(request,'projects/detailed.html',locals())


@login_required
def dianzan(request,id):
    if request.method == 'GET':
        data = get_object_or_404(models.XinXi,pk=id)
        if not models.DianZan.objects.filter(Q(user=request.user)&Q(xinxi=data)):
            models.DianZan.objects.create(
                user=request.user,
                xinxi=data
            )
            dicts = {
                "state": True,
                "content": "点赞成功 ",
            }
        return HttpResponse(json.dumps(dicts))


5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值