Python 毕设最常见的烂尾不是 Flask 不会写,而是开题写了爬招聘、第三周才发现反爬,数据没有,论文里的图全是假的。这页不堆 60 个空题目。按「先锁定数据 → 洗出三张图 → 再套一个网页」做。
验收标准:答辩时能打开页面,看到你自己跑出来的图;老师问数据哪来的,你能说出网站/数据集名字、字段、大概多少条、哪天抓的。
一、先选路,再选题
| 路线 | 适合谁 | 必须先有什么 | 别选 |
|---|---|---|---|
| 公开数据集 + 分析页 | 时间紧、数学一般 | Kaggle / 和鲸上能下载的表 | 自己发明数据集却说是真实数据 |
| 轻量爬虫 + 可视化 | 会一点 requests | 目标站能右键查看源代码、不登录 | 需要验证码、App 接口、频繁封 IP 的站 |
| sklearn 应用型 | 想讲模型 | 有标签的表,至少几百行 | 改进 Transformer、没有 GPU 的深度学习 |
| Django 管理系统 | 题目带「管理」 | 角色和流程,不依赖爬虫 | 又管用户又做推荐又做大数据 |
管理系统怎么做见 Django 毕业设计。下面以招聘岗位分析为例,因为问的人最多,也最容易在数据上翻车。
二、数据从哪来(写进开题的那种)
优先用公开数据集
- Kaggle 搜
jobs、salary、recruitment,挑更新不太老、有城市和薪资字段的。 - 和鲸社区、阿里天池同类竞赛数据。
- 国家统计局、高校就业质量报告:适合做宏观对比,不适合做「某招聘网站实时爬取」这种标题。
开题里这样写:「数据来自 Kaggle 数据集 XXX,共 N 条,字段包括岗位、城市、薪资区间、学历、公司规模。获取日期 2026-xx-xx。」老师一般不会再追「你是不是违法爬的」。
一定要自己爬时
- 先手动打开列表页,F12 看是不是普通 HTML。是接口 JSON 更好写;是加密参数就换题。
- 先爬 2 页、20 条,用 pandas 打出
head(),确认薪资、城市字段能解析。 - 间隔 2–3 秒,带正常 UA,失败就停。不要通宵扫全站。
- 论文写「教学演示、低频抓取公开列表」,不要写绕过反爬。
第 1 周末如果还拿不到 200 条干净数据,立刻改用公开集。界面可以后补,数据不能后补。
三、招聘分析题:最小可答辩版本
不要做「智能招聘平台」。做这一条就够:岗位数据进来 → 清洗薪资和城市 → 三张图 → Flask 一页展示。
字段就这些
| 字段 | 怎么处理 |
|---|---|
| title | 去空格,提取 Java / Python / 前端 等关键词 |
| city | 统一成「北京」「上海」,去掉「异地」 |
| salary | 「15-25K」转成最低、最高、中位数三个数字;「面议」单独一类 |
| education | 大专 / 本科 / 硕士 / 不限 |
| experience | 应届 / 1-3 年 / 3-5 年 |
必须出的三张图
- 城市岗位数量 Top 10
- 不同学历的薪资中位数
- 岗位关键词词云或柱状图
ECharts 或 matplotlib 都可以。答辩指着图说:「本科岗位中位数低于硕士,北上广岗位量最高」——这比讲爬虫架构有用。
Flask 只做 4 个接口/页面
/ 首页:三张图
/jobs 表格,可按城市筛选
/api/stats 返回聚合 JSON
/about 数据来源、抓取时间、条数
/about 一定要有。老师问数据,你打开这一页比翻论文快。
四、清洗时你会踩的坑
- 薪资单位混用:K、k、万、面议。先全部转成「月薪人民币」,转不了的丢进 unknown,不要填 0。
- 同一岗位重复发布:用公司名 + 岗位名 + 城市去重。
- 城市字段是「北京·朝阳」:只留到城市。
- 样本全是实习或全是高管:分析结果会歪,论文里写样本偏差。
把清洗脚本留在 clean_jobs.py,论文「数据处理」章节对着脚本写步骤,不要只贴 pandas 官方介绍。
五、想加机器学习时怎么加,才不像硬凹
有干净表之后,才考虑模型。最稳的是薪资区间分类或回归:
- 特征:城市、学历、经验、岗位类别(从标题里抽)。
- 基线:用中位数当预测,算出 MAE。
- 模型:RandomForest 或线性回归,再比一次 MAE / RMSE。
- 答辩讲:特征怎么来的、为什么比基线好、在哪些城市误差大。
不要上深度学习。老师一问损失函数和样本量,容易露馅。数学一般就停在「对比分析 + 可视化」。
六、8 周倒排(数据在前)
| 周 | 必须交出来的东西 |
|---|---|
| 第 1 周 | 数据文件或能跑的 20 条爬虫;开题里写死来源 |
| 第 2 周 | 清洗脚本 + 至少 200 条可用行 |
| 第 3 周 | 三张图在 Jupyter 或脚本里能出 |
| 第 4–5 周 | Flask 页面能筛选、能展示图 |
| 第 6 周 | 可选:sklearn 对比;测试 8 条用例 |
| 第 7 周 | 论文对着图和脚本写 |
| 第 8 周 | PPT、录屏、演示数据冻结,不再爬新的 |
第 2 周末还没有干净表,砍爬虫,换公开集。功能可以少,数据不能假。
七、答辩会问什么
- 数据真实吗?打开
/about和原始 csv 前 20 行。 - 薪资怎么算的?讲区间取中点,面议不进入均值。
- 准确率多少?没有模型就说这是描述统计,不报准确率。有模型就报和基线的对比,不报 99%。
- 为什么不用 Spark?数据量几万行,pandas 够,上集群没有收益。
演示路径:打开首页三张图 → 按「北京」筛选表格 → 打开 about 页报条数。一分半钟够。
八、题目怎么收窄(从大话收到能做完)
| 太大 | 收到这个粒度 |
|---|---|
| 基于大数据的智能招聘推荐平台 | 某公开集的岗位薪资与城市可视化 |
| 全网舆情深度学习分析 | 一个公开评论集的正负向统计 + 词云 |
| 房价预测神经网络研究 | Kaggle 房价回归,对比线性模型和随机森林 |
| 校园二手交易 + 推荐 + 小程序 | 只做 Django 发布和搜索,推荐砍掉 |
更多能做完的题在 题目清单,方向说明在 Python 毕业设计页。
常见问题
Python 毕业设计数据从哪里来?
公开数据集优先;能看源代码的公开列表可以小规模爬;问卷或模拟要在开题里写清生成规则。写不来源的题不要开题。
数学不好能做机器学习吗?
能做应用型。对比基线和一个 sklearn 模型,讲特征和误差。不要改进算法。
Flask 和 Django 怎么选?
分析展示用 Flask。带用户、权限、后台用 Django。
一个月来得及吗?
只够:一个数据源、清洗、三张图、一个展示页。不要同时爬很多站。
