应用台导航页
  • 主页
  • 博客
  • 知识库
  • 工作台
  • 集萃
  • 友链
  • 关于
绮课如何从教务系统抓取数据
绮课

绮课如何从教务系统抓取数据

技术
更新于 2026-01-06
— 1554 字
返回

操作步骤

  1. 配置好数据库连接的环境变量

  2. 打开全校课表查询页面。登录教务系统,并打开 【全校课表查询】,应该会自动弹出窗口打开课表查询页面,如果没有弹出,打开浏览器控制台,运行以下脚本: eval(document.body.lastElementChild.textContent.replaceAll('csujwc','jwctest'))

    javascript
    eval(document.body.lastElementChild.textContent)
  3. 在在浏览器控制台执行 document.cookie 或者是打开浏览器控制台,在任意网络请求中,找到其请求头的 cookie。将其作为绮课项目的环境变量 COOKIE,

    在中南大学教务系统课表查询页面获取用户凭证
    在中南大学教务系统课表查询页面获取用户凭证

  4. 运行 pnpm db:generate,生成 prisma 客户端代码

  5. 运行 pnpm db:push,将数据库模式应用到数据库

  6. 运行 pnpm db:seed,即可开始导入数据。

    如果遇到以下网络连接问题:

    Downloading Prisma engines for Node-API for windows [ ] 0%
    Error: request to...failed, reason: getaddrinfo ENOTFOUND 59996

    可以通过配置环境变量 PRISMA_ENGINES_MIRROR="https://registry.npmmirror.com/-/binary/prisma",指定 prisma 引擎下载镜像来解决,注意这个环境变量如果配在 .env 文件里,是没用的,可能是因为 prisma 并不读取 .env

如果你使用 powershell:

powershell
$env:PRISMA_ENGINES_MIRROR="https://registry.npmmirror.com/-/binary/prisma"

常见问题

部分课表查询页面无访问权限

某些 API 页面提示【您没有访问该功能的权限!】:这经常会发生,可以在浏览器教务系统页面删除 cookie 后再刷新得到新的 cookie 填入试试(好像是这样可以解决,记不得了)。

大概的操作是:

  1. 通过课表查询页先登录教务,
  2. 访问在 http://csujwc.its.csu.edu.cn/framework/main.jsp ,如果已经显示为 公共信息查询用户 kbuser,则跳转 4,否则在右上角退出
  3. 重复 2,直至确保其他任何页面刷新后都跳转到登录页后,再访问 全校课表查询 链接,此时会发现仍能访问,
  4. http://csujwc.its.csu.edu.cn/framework/main.jsp,就会发现已登陆为公共信息查询用户 kbuser。
  5. 进入教务运行管理,用菜单中的总课表查询,查几次数据
  6. 之后脚本使用相同 cookie 爬取数据时就具有相应权限了。

确保具有总课表查询权限
确保具有总课表查询权限

参考

  • Using HTTP cookies - HTTP | MDN
dors logoDors

Dors 是花野猫开发为知识工作者打造的数字花园应用,包含的博客、个人记事本、及其他实用功能。

花园

  • 花坛——博客
  • 果园——知识库

工坊——作者开发的实用工具

  • 小记
  • 秒切——一键按秒分割视频
  • 中国重点高校地理位置可视化网站
  • 中国行政区划数据查询平台
  • excel 重命名工具

misc

  • 生活章程
  • 画廊
  • just have fun!

© 2022 - present. All Rights Reserved.滇ICP备2025063395号-1

花野猫打造