操作步骤
-
配置好数据库连接的环境变量
-
打开全校课表查询页面。登录教务系统,并打开 【全校课表查询】,应该会自动弹出窗口打开课表查询页面,如果没有弹出,打开浏览器控制台,运行以下脚本:
eval(document.body.lastElementChild.textContent.replaceAll('csujwc','jwctest'))javascripteval(document.body.lastElementChild.textContent) -
在在浏览器控制台执行
document.cookie
或者是打开浏览器控制台,在任意网络请求中,找到其请求头的 cookie。将其作为绮课项目的环境变量 COOKIE,在中南大学教务系统课表查询页面获取用户凭证 -
运行
pnpm db:generate
,生成 prisma 客户端代码 -
运行
pnpm db:push
,将数据库模式应用到数据库 -
运行
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 填入试试(好像是这样可以解决,记不得了)。
大概的操作是:
- 通过课表查询页先登录教务,
- 访问在 http://csujwc.its.csu.edu.cn/framework/main.jsp ,如果已经显示为 公共信息查询用户 kbuser,则跳转 4,否则在右上角退出
- 重复 2,直至确保其他任何页面刷新后都跳转到登录页后,再访问 全校课表查询 链接,此时会发现仍能访问,
- http://csujwc.its.csu.edu.cn/framework/main.jsp,就会发现已登陆为公共信息查询用户 kbuser。
- 进入教务运行管理,用菜单中的总课表查询,查几次数据
- 之后脚本使用相同 cookie 爬取数据时就具有相应权限了。