近年来考研竞争持续加剧,报考人数屡创新高,考生对院校专业信息的准确性、全面性和及时性需求急剧上升。然而,现有考研信息平台普遍存在信息分散、数据更新滞后、查询方式单一且效率低下、缺乏个性化推荐与智能交互服务等产品痛点。考生往往需要在多个网站间反复切换,手动比对专业目录、考试科目、招生人数以及学科排名等数据,不仅耗时费力,还容易遗漏关键信息。本项目的立项原因正是为了解决上述产品问题,通过构建“考研AI问答与查询系统”,将分散的研招网官方招生数据与软科学科排名数据进行自动化整合,提供一站式的智能查询与问答服务,帮助考生快速获取准确、结构化的考研信息,从而降低信息检索成本,提升备考决策效率。
本系统共包含四大核心功能模块,具体描述如下:
数据采集模块:基于Selenium和BeautifulSoup开发多线程爬虫,分别针对中国研究生招生信息网的动态专业页面以及软科排名网站进行自动化数据抓取。支持断点续爬、自动重试和浏览器驱动重启,采集内容包括学校名称、专业代码、研究方向、考试科目、拟招生人数、参考书籍以及软科学科排名年份、分数、指标分等。采集后对学校名称、专业名称进行清洗与规范化,并通过唯一键去重,确保入库数据的完整性与一致性。
用户系统模块:实现用户的注册、登录及会话管理功能。用户密码经SHA-256哈希后存储于MySQL数据库,支持邮箱格式与密码强度验证。登录后系统记录用户的聊天历史,用户可查看自己过往的提问与AI回答,实现个性化服务。
AI问答模块:集成DeepSeek API,构建基于数据库信息的智能问答引擎。系统首先对用户输入的自然语言问题进行解析,利用正则表达式与关键词匹配提取学校、专业、排名查询等意图,动态生成SQL语句检索exam_subjects表与shanghai_subject_rankings表,将查询结果整合为结构化上下文,再调用大语言模型生成符合数据库事实的回答。提示词设计强调忠实于数据、区分招生信息与排名信息、告知信息缺失情况,从而保证回答的准确性与可解释性。
数据查询与可视化模块:提供多条件组合查询界面,支持按学校、专业、地区、排名年份等维度筛选考研专业信息和软科排名数据。同时内置统计图表功能,例如展示各专业热度排名、地区分布柱状图、学校排名趋势折线图等,实现数据的直观可视化展示,辅助用户进行横向对比与决策分析。
在本项目中,我独立负责了全部具体任务,包括:需求分析与功能设计、数据库ER图设计与表结构编写、研招网与软科排名爬虫的开发与调试、用户认证与聊天记录管理模块的实现、AI问答模块的提示词设计与API集成、Streamlit前端界面的搭建以及所有模块的联调测试与部署。项目采用的技术栈为:前端Streamlit(快速构建数据可视化Web应用),后端Python(业务逻辑与爬虫脚本),数据库MySQL 8.0(结构化存储),爬虫框架Selenium + BeautifulSoup(处理JavaScript动态加载页面),AI接口DeepSeek API(支持中文优化的自然语言生成)。系统架构上分为数据采集层、存储层、业务逻辑层与表现层,各层之间通过清晰的接口调用。实现中的亮点与难点包括:一是应对研招网反爬机制,通过设置随机等待时间、使用相对定位与多重选择器(XPath与CSS备选)、实现浏览器驱动自动重启与元素等待机制,有效降低了验证码和IP封禁风险;二是解决动态页面元素ID变化问题,采用基于文本内容的XPath匹配而非绝对路径,并添加了异常跳过逻辑;三是保障数据一致性,设计了crawl_progress表记录爬取状态,支持断点续爬,同时对关键表设置了复合唯一索引,防止重复数据入库;四是提升AI回答准确性,通过优化系统提示词、设置较低的温度参数,并对生成结果进行后处理验证,确保所有回答均能在数据库中找到对应依据;五是实现了动态SQL构建与多表联查(LEFT JOIN、窗口函数ROW_NUMBER()、聚合函数GROUP BY等),使得用户可以按学校+专业精确查询,并同时获取对应的软科排名及变化趋势分析。这些技术实现保证了系统的高效性、稳定性与可扩展性。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论