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

基于 Scrapy 与 Django 的农产品价格监测分析系统设计与实现

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

获取方式

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

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

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

项目简介

面向农产品批发行情的监测分析系统:真实采集北京新发地市场一整年 17 万条逐日挂牌报价,完成字段归一、去重聚合、链式价格指数、品种与产地对比、波动预警对比实验与数据质量报告,支持 12 个月度原始 CSV 在线下载。第 19 套「报刊账本风」界面,涨红跌绿。

演示视频

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

运行环境

编程语言Python 3.8 及以上
后端框架Django 4.2
数据采集requests 真实 HTTP 采集 + Scrapy 工程骨架(公开 JSON 接口,低频 + 断点续跑)
数据分析pandas 2.0 / NumPy 1.23
数据库MySQL 8.0(交付默认 SQLite,免安装)
可视化ECharts 5(已内置本地文件,离线可用)
数据规模170181 条原始报价 / 151790 条入库 / 1024 品种 / 358 天
操作系统Windows / macOS / Linux
启动方式双击一键脚本,或 python manage.py runserver 8084

功能模块

  • 真实采集:北京新发地公开价格接口,2025-11-01 ~ 2026-10-31 共 170181 条原始报价,12 个月度 CSV 随包并在页面可下载;如实标注为单一市场挂牌批发价,非全国均价/零售价
  • 数据工程完整:按月分段分页采集、低频请求、三次重试、断点续跑;字段归一、按(品种, 日期, 产地)聚合去重、IQR 异常检测与采集日志
  • 价格指数口径可解释:固定篮子 240 个品种 + 链式日变动截尾均值法,消除春节休市时报价品种从 240 骤减到 83~107 造成的假跌;对比了绝对均价法与中位数法的失效原因
  • 季节性结论:春节所在的 2026-02 等权均价最高 15.987,8 月最低 14.429,峰谷差约 10.8%;原始等权均价保留在库供核对
  • 预警对比实验:同一份真实序列上并行跑固定 20% 阈值(触发 2055 次、有效率 14.94%)与滚动 14 日 90 分位(触发 8648 次、有效率 8.00%),诚实结论是自适应阈值更灵敏但有效率更低
  • 产地口径校正:按同品种内偏离率替代全市场均价基准,避免把「产地卖什么品种」误当成「产地贵多少」;校正前后差异写进论文表 6-3
  • 10 个功能页面:行情总览 / 价格指数 / 品种目录与详情 / 品种比价 / 产地价差 / 波动预警 / 数据质量 / 原始数据 / 管理端,ECharts 本地内置离线可用
  • 论文实验可复现:全部数字来自 data/analysis/findings.json,重跑 import_prices 自动更新,不会出现论文与系统对不上

交付内容

  • 完整源码(Django 工程 + 真实采集脚本 + Scrapy 骨架 + 统计导入命令)
  • 12 个月度原始 CSV(真实数据)与演示数据库、findings.json 实验产物
  • 毕业设计任务书(Word)
  • 毕业设计开题报告(Word)
  • 毕业论文(Word,七章制,含口径修正、季节性分析与预警对比实验)
  • 系统使用与二次开发说明(Word + md)
  • 系统运行截图 11 张

最终成品目录结构

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

根目录:022-基于Scrapy与Django的农产品价格监测分析系统

界面截图

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

农产品价格监测分析
行情总览
农产品价格监测分析
价格指数与日环比
农产品价格监测分析
品种目录
农产品价格监测分析
品种详情(逐日走势)
农产品价格监测分析
品种详情(月度统计与产地)
农产品价格监测分析
品种比价
农产品价格监测分析
产地价差
农产品价格监测分析
波动预警与规则对比
农产品价格监测分析
数据质量与口径
农产品价格监测分析
原始数据下载
农产品价格监测分析
管理端

文档预览

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

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

常见问题

数据是真实采集的吗?

是。通过北京新发地市场公开价格接口真实采集 2025-11-01 ~ 2026-10-31 共 170181 条逐日挂牌报价,12 个月度原始 CSV 随包并在页面可下载。需要注意:这是单一批发市场的挂牌批发价,不是全国均价或零售价,页面与论文均如实标注。

价格指数为什么不用简单的当日均价?

春节休市时报价品种从 240 个骤减到 83~107 个,且停报的多是高价品种,等权均价会假跌约 70%。系统采用固定篮子 + 链式日变动截尾均值法:每个品种先算日涨跌幅,去掉两端各 10% 极端值后取均值再链式累乘,品种进出与量级差异都不影响指数。

为什么不用中位数?

农产品挂牌价常连续多日不调价,过半品种日涨跌幅为 0 时中位数会退化成 0,指数变成一条直线。截尾均值既不被 0 淹没,又能抗极端变动,论文表 6-1 给了三种口径的对比。

预警规则哪个更好?

没有绝对更好。固定 20% 阈值触发 2055 次、次日同向延续率 14.94%;滚动 14 日 90 分位触发 8648 次、延续率 8.00%。自适应阈值更灵敏但误报更多,人工复核场景更适合固定阈值,论文里如实写了这个结论与代理指标的局限。

产地价差可信吗?

不同品种价格量级差几十倍,直接比各产地平均报价反映的是品种结构。系统按每个品种自身全年均价作基准计算同品种内偏离率,校正后偏离收敛到 ±20% 以内,结论才可比。

数据量有多大?

170181 条原始报价、151790 条入库记录、1024 个品种、9 个品类、358 天、12 个月度 CSV(约 13 MB)。改 fetch_prices.py 的 MONTHS 列表可扩到更早年份,接口历史总量超过 80 万条。

现在还能更新数据吗?

能。python3 crawler/fetch_prices.py 补采缺月(已完成自动跳过),再 python3 manage.py import_prices 重建统计库与 findings.json,页面和论文数字会一起更新。

有哪几种系统角色?

访客无需登录可看全部 8 个分析页面并下载 CSV;管理员通过 Django admin 维护品种、品类、预警规则并查看采集日志(演示账号 admin / admin123456)。

常见报错怎么办?

端口占用换 8085;缺依赖执行 pip install -r requirements.txt;图表空白检查 static/vendor/echarts.min.js;导入时 database is locked 先停服务。说明文档第八节给了完整对照表。

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

备注 BS

csbysj2020ACE2487

也可在 B 站 看演示