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

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


⭐项目GitHub⭐


  • 相关说明

    • 功能实现
    • 返回数据内容说明
    • Tips
  • 接口
    • 信息请求
    • 选课请求
    • 其它请求
  • 使用部署
  • 测试部署

相关说明

功能实现

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

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

返回数据内容说明

  • 点击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

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

  1. 数据抓包(网络爬虫)-正方教务管理系统登录

    本文是基于java EE6.0 + HttpClient + fiddler为基础的. 最近在学jsp,闲来无事,做点东西锻炼锻炼,也可以学习学习,想学习数据抓包.第一印象就是我们学校的正方教务管理系 ...

  2. 数据抓包(网络爬虫)-正方教务管理系统登录后获取自己的课程表

    上次发的博客是:数据抓包(网络爬虫)-正方教务管理系统登录 好的,今天我们来抓自己的课程表数据,说实话,都会模拟登录了,抓个课程表的什么就不再话下了. 直接来步骤: 1.首先还是监视浏览器中得到自己课 ...

  3. python爬虫登录正方教务管理系统获取成绩数据

    本程序以四川理工学院教务管理系统为例.... 准备工作:1.ruquests库的使用(或者urllib也可行) 2.正则表达式的书写 3.HTTP通信基础 4.一些解析库的使用 准备一个浏览器监视工具 ...

  4. 一个爬进正方教务系统的爬虫的诞生

    我的新博客地址: http://jujuba.me/  0x00. 准备工作 工具: chrome python 一些python库,主要是requests 要想爬进教务系统,首先要知道教务系统的网址 ...

  5. 模拟登陆新版正方教务管理系统

    写在前面 已经过了一年半,网站有所改版,目前是可以正常登录的,获取信息的那几个url不是直接返回JSON了,需要自己去解析数据. 引入 与很多高校一样,西安皇家邮电大学一直钟爱于正方教务管理系统. 前 ...

  6. 爬取正方教务管理系统获取学生信息

    新版正方教务系统请点这里:模拟登陆新版正方教务管理系统(获取学籍信息.课表和成绩) 最近想学点爬虫玩玩,拿学校的教务系统练练手.学校与很多高校一样,用的是正方教务管理系统,非常的不好用,经常出现登陆不 ...

  7. 正方教务管理系统后台敏感日志查看漏洞

    正方教务管理系统作为正方软件的主打产品,从其官网了解到--截止至2012年10月,已有1,000余所高校使用了其数字化校园信息平台.从百度的最新检索结果也可见,成片成片的高校目前正在使用该教务系统. ...

  8. 教务系统自动评教_新版正方教务管理系统自动评教脚本

    本脚本适用于新版正方教务管理系统学生评教页面. 使用注意: 1,本脚本必须在Chrome内核浏览器使用,其余内核(IE,Edge等)无法使用! 2,如果您使用的是360浏览器/QQ浏览器/百度浏览器等 ...

  9. python 正方教务管理系统抢课脚本(仅供学习)

    正方教务管理系统抢课脚本 (仅供学习请勿它用!!!) 正方教务管理系统抢课脚本 进入正题 正方教务管理系统抢课脚本 该脚本使用python代码模拟发包实现.教务管理系统版本可能有所不同.请根据实际情况 ...

最新文章

  1. 8道Python基础面试练习题
  2. python super
  3. oracle存储过程无效字符_Oracle存储过程基础+ 错误代码
  4. gzip, gunzip, zcat - 压缩或展开文件
  5. rect函数_R函数不会写,quot;抄quot;总会吧!
  6. ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案
  7. 你的脑容量(每日一练)
  8. 软件工程的极端所有权
  9. 实现国标GB28181视频流媒服务平台EasyGBS-公安部国标35114(GB35114)A级检测说明
  10. 电商项目——分布式基础概念和电商项目微服务架构图,划分图的详解——第二章——上篇
  11. 百度地图api基本用法
  12. matlab trapz二重积分函数_用MATLAB计算某些区域上的二重积分666.doc
  13. 机智云AIoT开发平台,让物联网产品开发和运营有迹可循
  14. OpenCV论道:为什么我的伽马校正函数只有一行?
  15. 运维之DNS服务器Bind9配置解析和基础示例及附带命令
  16. 关于TLC2543不常见问题
  17. vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息
  18. nested exception is io.lettuce.core.RedisCommandExecutionException: MOVED 7514 100.71.1.91:6380
  19. sws_getContext函数详细使用
  20. 手写表单及h5表单验证举例

热门文章

  1. sharding-jdbc4.1.1 分库分表后 mysql查询优化(count)
  2. WSL2+Docker环境搭建
  3. 谷歌开发者账号关联问题,如何避免Google Play账号关联问题
  4. ISO20000认证材料大全
  5. Vue3实现拖拽定制化首页
  6. 计算机二级基础知识ppt,计算机二级公共基础知识软件工程基础ppt培训课件
  7. word文档中标题中的黑点如何去除
  8. 小米回应造车传闻;电子竞技员国家职业标准出炉;库克称,很多功能来自中国消费者反馈​ | EA周报...
  9. 阿里云高新技术企业认定介绍及常见问题
  10. 淘宝店铺(宝贝描述模板)克隆攻略