尧图精选

【实战教学】大学生选课,如何用AI画出无冲突课表

🕒 发布时间:2026/9/4 0:38:11 📁 来源:尧图网络
一、引言开学选课的痛谁懂学校的选课系统普遍是即选即中模式——提交的选课请求直接生效不靠抢序。听起来省心但真正的麻烦在选课之前每门课常有多个老师开课每个老师又有多个课堂不同课堂的上课时段、地点、周次各不相同要同时选中多门课还要保证彼此时间不冲突在学校选课网页剩余课堂列表里一格一格翻、一行一行比对看得很麻烦还容易漏。解决思路把课程信息的原始数据整个交给豆包让 AI 替我完成三件机械劳动——解析数据、汇总课堂、按时间冲突原则筛选再做成可视化课表。我只需要负责两件事提出选课需求、审核方案。全程不到半小时正式选课需要抢因为所有人一起选时照着课表直接选课完全不用慌。二、第一步拿到课程原始数据——先查看源代码再另存为什么不能直接右键另存网页 HTML 结构 CSS JS 图片等资源。直接网页另存为会把这一大堆全部下载下来夹带大量无关文件。正确做法重点课程列表页面右键 → 查看网页源代码CtrlU进入 view-source 视图在源代码页CtrlS 另存为.html文件每个选课页面都这样操作一遍把全部课程 HTML 存下来。这样得到的是纯净 HTML 文本最适合解析也避免夹带资源文件。课程列表页 → 右键查看源代码(CtrlU) → CtrlS 另存为 .html → 每页重复三、第二步把任务和资料一次性交代给 AI提示词①把 HTML 文件作为附件上传任务说明一次写清楚。提示词建议含三块数据来源、任务清单、约束条件。提示词①可直接复制附件里是学校选课系统剩余课堂页面的 HTML 源码存档view-source 另存得到 一共 N 个文件每个文件对应一个课程列表页面。 请帮我做以下事情 1. 解析全部课程数据从这些 HTML 中提取每一门课的【课程代码、课程名称、班级、 学院、任课教师、上课时间星期几第几节、上课地点、周次】。 注意HTML 里每行课程信息包在语法高亮的 span 标签里请先剥掉标签、做 HTML 实体反转义后再提取班级信息里含有学院名提取班号前先去掉学院名 星期X以最后一个字符为准不要取到期字。 2. 汇总任课教师按课程汇总每一门课的全部任课教师含每个班级对应的教师。 3. 绘制详细课表以周一~周日 × 第1~7节的网格形式绘制课表每个格子显示 【课程名班级、教师、地点、周次】同一课堂有多个班号如 03/80的合并标注 不要当成两门课。 4. 校区过滤只保留【主校】和【西校区】的课堂去除【某异地校区】的课堂。 5. 标注我的选课意向以下课程是我准备选的主选课请在课表中高亮标出 - [课程代码A] 课程名A - [课程代码B] 课程名B - ……逐行列出 如果某些课选不到我有备选课备选关系如下先不放进课表仅作背景信息 - [主课A] 选不到 → 可用 [备选X] / [备选Y] - [主课B] 选不到 → 可用 [备选Z] 请先输出每门课的全部教师清单再输出完整课表。四、AI 是怎么看懂HTML 的技术原理4.1 剥标签去掉语法高亮span课程行源码包在td classline-content的语法高亮span里td classline-content span stylecolor:...[研]/span span课程码/span span课程名/span ... /td直接读全是标签。AI 先剥掉所有span只留文本。4.2 反转义html.unescape()view-source 存档里特殊字符被转成 HTML 实体gt;、#62;、#x3e;。Python 标准库html.unescape(s)可一次性还原为 Unicode 字符这是处理源码存档的关键一步。参见 Python html 官方文档。import html s 星期一 第3-4节 lt;第1-16周gt; print(html.unescape(s)) # 星期一 第3-4节 第1-16周4.3 按tr切块 正则提取剥完标签、反转义后按tr切块再用正则提取各字段课程代码/名称/班级/学院单元格前几段任课教师倒数第二个 ellipsis div时间地点最后一个 ellipsis div形如星期一 第3-4节第1-16周 教学楼A201用正则拆出 星期/节次/周次/地点。正则提取表格数据的通用原理见 Decodo: How to Parse HTML With Regex正则本质是状态机适合提取扁平可预测的子串配合re.DOTALL和非贪婪.*?可避免跨标签误匹配。4.4 真实踩过的三个坑坑现象解法星期解析取星期X第2字符期→ 所有星期0全表错位取最后一个字符映射数字80 班号03 与 80 是同一堂课被当两门 → 误判冲突合并标注03/80班复合时间串周一第3-4节第1-16周难以结构化拆成 星期1、节次3-4、周次1-16 三个维度五、第三步第一张课表——全部课程 全部老师横轴 周一~周日纵轴 第1~7节每格 课程名班级 教师 地点 周次每门课不同颜色底部图例只保留主校/东校区异地校区剔除。价值一眼看清哪些课在哪些时段冲突点直接暴露在网格上。例如当时发现论文写作01 / 矩阵分析05 / 最优化02同落周四第4节、工程经济02 / 高等信息论02同落周四第5节——这些就是后面选课要避开的。六、第四步让 AI 按不冲突原则选课提示词②提示词②可直接复制基于你刚才解析出的全部课程数据请给我一套选课方案并绘制最终的课表。 我准备选的主课8门 - [课程代码] 课程名A - [课程代码] 课程名B - ……逐行列出每门课从现有班级里选 1 个班即可 备选关系若主课选不到 - [主课A] 选不到 → 备选[备选1]、[备选2]、[备选3] - [主课B] 选不到 → 备选[备选1] - [主课C]、[主课D] 选不到 → 备选[备选1]、[备选2]、[备选3]、[备选4] 输出要求 1. 先给出一套不含备选课的最终课表8门主课各选 1 个班要求没有任何时间冲突 2. 再给出一套带备选课及备选方案的课表主课按上面方案放置备选课用 虚线框 备选·替代X角标标注与它替代的主课同格并排表示二选一 3. 两张课表都必须无时间冲突如果某门主课与备选课无法同时避开冲突 请说明原因并给出替代建议 4. 每张课表保持周一~周日 × 第1~7节网格格子含【课程名班级、教师、地点、周次】。冲突检测原理把每门课的课堂映射到星期(1-7) × 节次(1-7)网格坐标同一坐标出现两门课即冲突逐班调整直到所有主课互不重叠。备选课也按同样规则校验只有与其余所有课都不冲突才作为可替换项放进备选课表。最终结果课表①不含备选8 门主课分布在周一第2/6-7节、周二第4节、周三第1/5节、周四第1/4/6-7节、周五第6-7节周六日全空课表②含备选主课保持原方案4 门备选课数值分析I、高等信息论、计算机网络原理与体系协议、人工智能基础及应用以虚线框标注在对应替代位置与主课互斥二选一且与其余课程均不冲突。七、避坑清单与进阶玩法避坑别直接另存网页会夹带无关资源文件——先查看源代码再另存提醒 AI 星期解析取末字符提醒 AI 合并重复课堂班号03/80提示词把约束一次说清去异地校区、无冲突硬约束减少返工。进阶换学校/换系统DOM 结构不同时把 HTML 结构描述换成你实际页面的即可方法通用让 AI 写解析脚本基于它分析出的结构让它生成一段 Python 解析脚本剥标签→unescape→正则每学期复用多方案对比让 AI 输出 2~3 套不同侧重方案如课最少都在同一栋楼再自己筛选。八、结语选课难点不在抢而在提前把方案排好。核心就是把机械劳动交给 AI解析 HTML、汇总教师、冲突检测、画课表最后自己来决策选哪些课、优先级这样就可以省去很多工作量了。参考资料[S2] Python html 模块官方文档html --- 超文本标记语言支持 — Python 3.14.7 文档[S3] Decodo: How to Parse HTML With Regex: How to Parse HTML With Regex: A Practical Guide[S4] CSDN: 网页数据的解析提取正则 re 库详解网页数据的解析提取正则表达式----re库详解_re正则表达式提取网页-CSDN博客[S1] 本对话对真实选课页面存档的一手实测过程
上一篇/下一篇内容由系统自动关联 返回资讯列表 →