文末获取资源,收藏关注不迷路
前言
随着社会经济的快速发展,人们的生活水平得到了显著提高,对汽车的需求量也越来越多。为此,二手车销售数据分析也变得越来越为重要。但是在大量的二手车信息中,人们在提取自己最想要的信息时变得不那么容易。本系统通过对网络爬虫的分析,研究人人车网站数据,尝试使用Python技术进行开发,将人人车网二手车信息尽可能的爬取出来,并对结果进行检测判断,最后可视化分析出来,为用户提供精确的查询结果。基于python的二手车销售数据分析系统旨在提高数据挖掘的效率,便于科学的管理和分析二手车数据。
本文先分析基于python的二手车销售数据分析系统的背景和意义;对常见的爬虫原理,获取策略,信息提取等技术进行分析;本系统使用python进行开发,MySQL数据库进行搭建,实现了二手车的数据爬取;对数据库的查询结果进行检测并可视化分析,对系统的前台界面进行管理,分析爬取的结果,并对二手车数据结果进行大屏显示;最后通过测试实现了数据爬取,存储过滤和数据可视化分析,以及系统管理等功能。
一、研究背景
互联网信息技术已经发展了很长时间,时至今日,越来越多的终端设备出现在人们的生活中,各种网络技术、移动终端日益成熟,而且价格越来越平民化。互联网技术已经到了前所未有的高度,借助于网络基础设施的建设,各种电子芯片和云计算快速的发展。传统信息的传播方式逐渐萎靡,比如报纸杂志等,几乎破产。目前人们只需要通过掌上电脑或者手机就可以查询到自己所需的信息,之所以网络设备如此受欢迎,是因为借助互联网技术所提供的强大信息呈现在网络中,只需要通过手指一点,就可以获取到自己想要知道的内容。用户只需要通过一个关键字,就可以从海量的信息中检索出相关的信息词条,然后将这些信息可视化呈现在用户面前,这种方式受到了用户的喜爱。
二、研究意义
在目前信息化时代,数据的收集和整理是非常重要的工作。高效的收集可以提高相关工作人员的工作效率。计算机技术也逐渐向精细化方面发展,技术的更新影响了人们的生产生活方式,不同的技术平台也不断的更新着相关的信息。传统的信息采收集都是采取人工的方式,并对信息进行整理、修改、存储等,严重影响了信息制作的时间成本。另外,随着信息量的增加,工作人员整理起来更加的繁琐,而且容易出错,更无从谈起精确的归纳和统计,所以效率逐渐低下。在这些重复的工作中,只有通过信息化技术手段来进行管理,才能有效的提高信息的获取效率。
本基于python的二手车销售数据分析系统中,通过相关的技术手段对二手车数据进行爬取,收集人人车网中的二手车数据信息,并将这些数据存储到数据库中,在收集二手车数据时进行清洗、归纳和整理,形成了有条理的数据集合,可以有效的提高二手车数据数据的效率。借助数据库平台的优势可以对数据进行查询和统计,本系统旨在实现用户对二手车数据的获取,并可以通过可视化平台对数据进行展现,提供系统内的信息检索手段,可以更有效的查询用户需要的二手车数据,最终实现了二手车数据的有效挖掘,提高了数据爬取的准确率,实现了数据的统计查询功能,并对爬取的数据进行管理,提高了工作效率。
对于需要购买二手车或者销售二手车的用户来说,上网快速找到合适的二手车信息,无疑是急需的。二手车网站数据可视化项目从繁杂的二手车信息中提取出潜在的、有价值的数据,并以图形的形式进行直观化展示,将用户从一堆杂乱无章的数据里面解放出来。通过该系统用户能够更加高效的理解和分析二手车数据信息,快速获取自身所需要的信息使得二手车信息能够更加明确、有效地进行传递。有利于用户明确学习方向,以及所需要掌握的工作技能和知识。
本题目来源于求职二手车研发项目的子项目,该项目主要完成一个二手车数据系统的设计和开发,该系统用于收集当前地方二手车数据,然后通过爬取、清理、存储、统计二手车数据,并进行二手车数据,是现代化二手车系统不可缺少的部分,为具体二手车的需求发展趋势提供便捷的推荐模式。
三、主要使用技术
环境需要
1.运行环境:python3.7/python3.8。
2.IDE环境:pycharm+mysql5.7;
3.数据库工具:Navicat11
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
技术栈
后端:python+django
前端:vue+CSS+JavaScript+jQuery+elementui
使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用PyCharm 导入项目,修改配置,运行项目;
将项目中config.ini配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名
四、研究内容
基于python的二手车销售数据分析系统用户登录,先验证信息、成功启动系统后进行登录。登录验证成功后,获取到登录权限,跳转到系统首页。
进入到基于python的二手车销售数据分析系统大屏界面,通过图形化显示出车牌地统计、二手车类型、热卖车辆统计、销售记录统计、成色统计、上市时间统计、颜色统计
本系统使用B/S模块进行开发,包括服务器和客户端。浏览器客户端主要通过浏览器进行访问系统,查看二手车数据的数据信息,而服务器端通过爬虫来爬取二手车数据的数据,然后存入数据库。从框架层次上本系统确定包括数据层、业务层和表现层。可以更好的管理系统的代码结构,各自负责不同的任务,实现代码的整理,提高开发速度,更有利于后期的升级维护和协作开发
完成数据采集后,数据存储在MySQL中,基于python的二手车销售数据分析系统可以对爬取的数据进行管理,管理员登录数据库,可以查看每一条二手车数据的内容以及爬取的目标网址,也可以对单条的二手车数据进行删除。此外,管理还具有系统管理、用户管理等功能。前台用户具有注册登录,信息查看等功能,其中大屏数据包括车牌地统计、二手车类型、热卖车辆统计、销售记录统计、成色统计、上市时间统计、颜色统计。其中,基于python的二手车销售数据分析系统的数据管理功能模块如图
五、核心代码
# coding:utf-8
__author__ = "ila"
from django.http import JsonResponse
from .users_model import users
from util.codes import *
from util.auth import Auth
import util.message as mes
def users_login(request):
if request.method in ["POST", "GET"]:
msg = {'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
if req_dict.get('role')!=None:
del req_dict['role']
datas = users.getbyparams(users, users, req_dict)
if not datas:
msg['code'] = password_error_code
msg['msg'] = mes.password_error_code
return JsonResponse(msg)
req_dict['id'] = datas[0].get('id')
return Auth.authenticate(Auth, users, req_dict)
def users_register(request):
if request.method in ["POST", "GET"]:
msg = {'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
error = users.createbyreq(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_session(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}
req_dict = {"id": request.session.get('params').get("id")}
msg['data'] = users.getbyparams(users, users, req_dict)[0]
return JsonResponse(msg)
def users_logout(request):
if request.method in ["POST", "GET"]:
msg = {
"msg": "退出成功",
"code": 0
}
return JsonResponse(msg)
def users_page(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code,
"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
req_dict = request.session.get("req_dict")
tablename = request.session.get("tablename")
try:
__hasMessage__ = users.__hasMessage__
except:
__hasMessage__ = None
if __hasMessage__ and __hasMessage__ != "否":
if tablename != "users":
req_dict["userid"] = request.session.get("params").get("id")
if tablename == "users":
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = users.page(users, users, req_dict)
else:
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = [],1,0,0,10
return JsonResponse(msg)
def users_info(request, id_):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
data = users.getbyid(users, users, int(id_))
if len(data) > 0:
msg['data'] = data[0]
# 浏览点击次数
try:
__browseClick__ = users.__browseClick__
except:
__browseClick__ = None
if __browseClick__ and "clicknum" in users.getallcolumn(users, users):
click_dict = {"id": int(id_), "clicknum": str(int(data[0].get("clicknum", 0)) + 1)}
ret = users.updatebyparams(users, users, click_dict)
if ret != None:
msg['code'] = crud_error_code
msg['msg'] = ret
return JsonResponse(msg)
def users_save(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
req_dict['role'] = '管理员'
error = users.createbyreq(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_update(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
if req_dict.get("mima") and req_dict.get("password"):
if "mima" not in users.getallcolumn(users,users):
del req_dict["mima"]
if "password" not in users.getallcolumn(users,users):
del req_dict["password"]
try:
del req_dict["clicknum"]
except:
pass
error = users.updatebyparams(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_delete(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
error = users.deletes(users,
users,
req_dict.get("ids")
)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
六、文章目录
摘 要 I
Abstract II
1 绪论 3
1.1 课题背景 3
1.2 课题意义 3
1.3 研究内容 4
2 相关技术介绍 6
2.1 系统开发环境 6
2.2 网络爬虫概述 6
2.3 Python技术 7
2.4 MySQL数据库 8
3 系统需求分析 9
3.1 可行性分析 9
3.1.1操作可行性 9
3.1.2经济可行性 9
3.1.3技术可行性 9
3.2 功能需求分析 9
3.2.1爬虫功能需求分析 9
3.2.2数据可视化功能需求分析 11
3.3 非功能需求分析 11
4 系统设计 13
4.1 系统架构设计 13
4.2 系统功能设计 14
4.2.1数据采集功能设计 14
4.2.2数据分析功能设计 15
4.3 系统流程设计 16
4.3.1爬虫流程设计 16
4.3.2数据分析可视化流程 17
4.4 数据库设计 18
5 系统实现 20
5.1数据采集的实现 20
5.2数据库操作的实现 21
5.3系统首页的实现 21
5.4二手车数据大屏显示 22
6 系统测试 24
6.1测试目的 24
6.2功能测试 24
6.3测试总结 25
结 论 26
参 考 文 献 27
致 谢 28