毕设网毕设选题大全 · 成品源码

基于 Scrapy 的汽车销量数据分析系统设计与实现

项目编号 019 · 更新 2026-11-05
PythonDjangoScrapypandasNumPyEChartsMySQL

获取方式

两个渠道都可以买:面包多(在线支付、自动发货)或闲鱼;也可以加微信咨询。

面包多购买 闲鱼购买 去 B 站看演示

咨询微信:csbysj2020 / ACE2487(备注 BS)

项目简介

面向汽车市场销量榜单的分析系统:真实采集汽车之家「全车型销量总榜」12 个月 7786 条月度销量,完成价格区间解析、去重、CR10 与 HHI 集中度、价格带与能源结构分析,并给出「翻页失效 / 旧月份静默回退」两个采集陷阱的对比实验。第 21 套「工业规格书风」界面。

演示视频

视频也可在 B 站视频页 观看

运行环境

编程语言Python 3.8 及以上
后端框架Django 4.2
数据采集requests 真实 HTTP 采集 + Scrapy 2.x 工程骨架(公开接口,低频 + 重试 + 去重)
数据分析pandas 2.0 / NumPy 1.23
数据库MySQL 8.0(交付默认 SQLite,免安装)
可视化ECharts 5(已内置本地文件,离线可用)
数据规模7786 条月度销量 / 836 个车系 / 12 个月份
操作系统Windows / macOS / Linux
启动方式双击一键脚本,或 python manage.py runserver 8086

功能模块

  • 真实采集:汽车之家公开接口 2025-10 ~ 2026-09 共 7786 条「车系 × 月份」记录、836 个车系,原始 CSV 随包并可在页面下载;页面与论文均标注「榜单收录车型口径,非全国销量」
  • 采集陷阱实测:榜单页为 Next.js 服务端渲染只输出首页 20 条,按 URL 后缀翻页 pageindex 恒为 1、反复返回同一批数据且不报错;改走页面自身调用的 getList 接口(pagesize 50)才拿到全量
  • 旧月份静默回退:直接按页面 URL 请求 2026-04 之前月份,服务端会替换成最新月数据;改用接口 date 参数并逐月比对首条车系与销量,确认 12 个月互异
  • 集中度双指标:CR10 仅 14.08%~17.34%、HHI 仅 59.0~74.4(美国司法部口径属高度分散),并指出 1—2 月集中度峰值来自「分母收缩」而非头部变强
  • 结构性结论:新能源销量占比 56.86% → 66.99%(1 月回落至 35.85%);2026-09 价格带 10-20 万占 39.38% 居首,10 万以下仅 142 款车却贡献 32.64% 销量、单车系均销 3748 辆最高
  • 主动放弃品牌维度:源站只有 brandid、无品牌名,强行合并会让结论随规则漂移,因此只做车系 / 价格带 / 能源三个可自查维度,论文第 6.4 节写明取舍理由
  • 10 个功能页面:市场总览 / 月度走势 / 车系目录与详情 / 价格带 / 能源 / 集中度 / 数据质量 / 原始数据 / 管理端,ECharts 本地内置离线可用
  • 论文实验可复现:全部数字来自 data/analysis/findings.json,重跑 import_sales 自动更新;采集同时提供 Scrapy 工程与免依赖脚本,同月输出条数一致(660 条)

交付内容

  • 完整源码(Django 工程 + Scrapy 蜘蛛 + 免依赖采集脚本 + 统计导入命令)
  • 12 个月原始销量 CSV(真实数据)与演示数据库、findings.json 统计摘要
  • 毕业设计任务书(Word)
  • 毕业设计开题报告(Word)
  • 毕业论文(Word,七章制,含采集口径验证、集中度双指标与结构分析)
  • 系统使用与二次开发说明(Word + md)
  • 系统运行截图 10 张 + 功能演示视频

最终成品目录结构

下面是交付包里的真实目录,共 67 个文件。只展示文件名,不含文件内容; 点击文件夹可逐层展开,看到每个模块是怎么拆分的。

根目录:019-基于Scrapy的汽车销量数据分析系统

界面截图

点击任意一张可放大,支持左右切换(也可用键盘 ← → 键)

汽车销量数据分析
市场总览
汽车销量数据分析
月度走势与集中度
汽车销量数据分析
车系目录
汽车销量数据分析
车系详情(销量与名次走势)
汽车销量数据分析
价格带结构
汽车销量数据分析
能源结构
汽车销量数据分析
集中度与头部席位
汽车销量数据分析
数据质量与口径
汽车销量数据分析
原始数据下载
汽车销量数据分析
管理端

文档预览

交付的任务书、开题报告与论文均为 Word 文档,下面是真实页面预览;点击可放大并左右切换:

毕业论文(七章制)
毕业论文(七章制)
毕业设计任务书
毕业设计任务书
开题报告
开题报告

常见问题

数据是真实采集的吗?

是。通过汽车之家「全车型销量总榜」公开接口真实采集 2025-10 ~ 2026-09 共 7786 条月度销量,覆盖 836 个车系,原始 CSV 随包并可在页面下载。需要说明:这是榜单收录车型口径,每月约 624~678 个车系,不等于全国销量,也不等于上险量,页面与论文都如实标注。

为什么说翻页会失效?

榜单页是 Next.js 服务端渲染,只输出首页 20 条,翻页由前端调用接口完成。用 2026-09-2.html、?page=2 等后缀请求,返回的 pageindex 恒为 1,反复拿到同一批数据,而且不报错。系统的做法是直接对接页面自身调用的 getList 接口,pagesize 可设 50,12 个月共 13~14 页。

旧月份的数据是不是假的?

如果直接按页面 URL 请求 2026-04 之前的月份,服务端会静默回退成最新月数据,看起来有数据、字段也齐全。接口的 date 参数才真实生效:本系统逐月比对首条车系与销量(2025-10 宏光MINIEV 61506、2025-12 Model Y 65874、2026-09 Model Y 50359 等),确认 12 个月互异。

CR10 才 15% 左右,是不是算错了?

没算错。CR10 是前 10 名销量占榜单总量,本数据每月在榜 600 多个车系,份额被长尾摊得很薄;HHI 只有 59~74(对应约 135~170 个等规模主体),两个指标互相印证「高度分散」。1—2 月 CR10 升到 17% 是淡季长尾塌缩更快、分母变小造成的,3 月总量回升后立刻跌回 14.08%。

为什么不做品牌份额?

源站只提供 brandid,没有品牌名称,也没有品牌与车系的映射表。强行按 ID 合并,结论会随合并规则漂移(车系改名、子品牌拆分都会影响),无法向读者解释清楚。所以系统主动只做车系、价格带、能源三个维度,这是取舍不是缺失,论文 6.4 节写了理由。

价格带的均价是成交价吗?

不是。源站只有官方指导价区间,系统取区间下界(起售价)划分价格带并计算销量加权均价,描述的是「官方定价分布」。真实成交价、终端优惠数据源站不提供,因此页面不做成交均价推断。

数据量有多大?

7786 条月度销量、836 个车系、12 个月份,原始 CSV 约 480 KB,全期榜单总销量 2021.8 万辆。改 fetch_sales.py 的 MONTHS 列表可以扩到更早区间,但接口实测最早只到 2025-10。

现在还能更新数据吗?

能。python3 crawler/fetch_sales.py 重新采集(约 3~4 分钟),再 python3 manage.py import_sales 重建统计库与 findings.json,页面数字会一起更新;该命令幂等,每次先清空业务表再写入。

有哪几种系统角色?

访客无需登录即可查看全部 9 个分析页面并下载 CSV;管理员通过 Django admin 维护车系主数据、月度销量与三张汇总表,并可查看采集日志(演示账号 admin / admin123456)。

常见报错怎么办?

端口占用换 8087;缺依赖执行 pip install -r requirements.txt;改了模板不生效需重启服务(Django 缓存模板);改了价格带配置必须重跑 import_sales。说明文档第八节给了完整对照表。

💬 在线咨询9:00–23:00
加微信咨询

备注 BS

csbysj2020ACE2487

也可在 B 站 看演示