新正方教务管理系统的爬虫webApi-Django(带后台)-用以开发校园APP/小程序

⭐废话:从去年十二月底开始写教务系统爬虫的,起初只因想快速清晰地查期末成绩,不然每次要点很多步骤。
后面用自己的方法写出来了,但因为那时候刚接触爬虫,代码写的非常糟。。。
甚至不知道怎么用cookies和session,导致不久就被教务系统封掉了IP。。。

后面看到GitHub上一位大哥的API,参照了开头的部分,学习到了思路,后面开发了小程序,然后断断续续到今天重构完,这个项目总算是能看了…


⭐项目GitHub⭐



相关说明

功能实现

  • 个人信息
  • 停补换课消息
  • 课程修读情况(学业详情)
  • 成绩
  • 课表
  • 查询已选课程
  • 选课
  • 退课
  • 录取查询(仅本校)
  • 空教室查询

  • 响应式后台管理数据库
  • 对每天的每个请求生成日志文件
  • 避免教务系统无法访问,存储部分请求数据到服务器,可选参数刷新

返回数据内容说明

  • 点击JSON说明.MD访问返回的JSON数据键值名称以及具体内容说明

Tips

  • 为了方便管理和请求,不采用传递cookies的方法,而是将cookies存储到数据库让服务器请求
  • 须先通过pinfo新增学生后才能访问其它API
  • 使用simpleui后台,自定义在settings.py以及info/admin.pyinfo/models.py
  • 选课API可能并不通用,这里仅提供思路,具体请参照自己学校情况
  • 代码中有关于开发者本校的录取查询(recruitApp)不通用,请自行编写替换或删除
  • 使用MySQL数据库,请保证MySQL版本为5.6及以上
  • config.json中包含了http代理、官网、Server酱、上下课时间配置
    • ServerChan为none时,不使用Server酱,而配置时须填上完整url,末尾以’.send?'结尾
    • proxy为none时,不使用代理
    • nowterm本来想写成自动判断的,但想到第一个期末成绩出来的时间不定,所以还是用了手动配置,'3’为上学期,'12’为下学期

接口

信息请求


个人信息(必须,用以登录):/info/pinfo

参数名必选说明
xh学号
pswd密码

停补换课消息:/info/message

参数名必选说明
xh学号
pswd密码

课程修读情况(学业详情):/info/study

参数名必选说明
xh学号
pswd密码
refresh填入’no’则读取缓存

成绩: /info/grade

参数名必选说明
xh学号
pswd密码
year学年
term学期(1 or 2)
refresh填入’no’则读取缓存

课表:/info/schedule

参数名必选说明
xh学号
pswd密码
year学年
term学期(1 or 2)
refresh填入’no’则读取缓存

手动更新cookies:/info/update

参数名必选说明
xh学号
pswd密码

选课请求


已选课程:/choose/choosed

参数名必选说明
xh学号
pswd密码
refresh填入’no’则读取缓存

板块课:/choose/bkk

参数名必选说明
xh学号
pswd密码
bkk板块号(1 or 2)

选课:/choose/choose

参数名必选说明
xh学号
pswd密码
doId执行ID,精确到班级,从板块课API中可获取
kcId课程号,精确到课程,从板块课API中可获取,在其它API中字段名为"courseId"
kklxdm精确到板块课页面,从板块课API中可获取,板块课1、2不同

退课:/choose/cancel

参数名必选说明
xh学号
pswd密码
doId执行ID,精确到班级,从板块课API中可获取
kcId课程号,精确到课程,从板块课API中可获取,在其它API中字段名为"courseId"

其它请求


one·一个 每日文字:/one

※method : GET

录取查询(仅作者学校):/recruit/query

参数名必选说明
identity考生号 or 身份证号

使用部署

- 推荐使用**uswgi+nginx**,具体部署可移步百度 - 更改config.json中各项:参照上方Tips

测试部署-测试用

  • 请确保服务器或虚拟环境安装了Python3.6及以上版本

1.安装依赖模块

$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

2.开放安全组配置

  • 开放8000端口

3.使用-迁移数据库

  • 在settings.py中配置数据库信息
$ python manage.py makemigrations
$ python manage.py migrate

4.创建后台用户

$ python manage.py createsuperuser

5.用终端打开zfnweb文件夹,并运行

$ python manage.py runserver 0.0.0.0:8000

6.访问后台

/admin

访问你服务器的IP地址:8000/xxx

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宅记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值