新正方教务管理系统的爬虫webApi-Django(带后台)-用以开发校园APP/小程序
⭐废话:从去年十二月底开始写教务系统爬虫的,起初只因想快速清晰地查期末成绩,不然每次要点很多步骤。
后面用自己的方法写出来了,但因为那时候刚接触爬虫,代码写的非常糟。。。
甚至不知道怎么用cookies和session,导致不久就被教务系统封掉了IP。。。
后面看到GitHub上一位大哥的API,参照了开头的部分,学习到了思路,后面开发了小程序,然后断断续续到今天重构完,这个项目总算是能看了…
⭐项目GitHub⭐
- 相关说明
- 功能实现
- 返回数据内容说明
- Tips
- 接口
- 信息请求
- 选课请求
- 其它请求
- 使用部署
- 测试部署
相关说明
功能实现
- 个人信息
- 停补换课消息
- 课程修读情况(学业详情)
- 成绩
- 课表
- 查询已选课程
- 选课
- 退课
- 录取查询(仅本校)
- 空教室查询
- 响应式后台管理数据库
- 对每天的每个请求生成日志文件
- 避免教务系统无法访问,存储部分请求数据到服务器,可选参数刷新
返回数据内容说明
- 点击JSON说明.MD访问返回的JSON数据键值名称以及具体内容说明
Tips
- 为了方便管理和请求,不采用传递cookies的方法,而是将cookies存储到数据库让服务器请求
- 须先通过pinfo新增学生后才能访问其它API
- 使用simpleui后台,自定义在settings.py以及info/admin.py和info/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/小程序相关推荐
- 数据抓包(网络爬虫)-正方教务管理系统登录
本文是基于java EE6.0 + HttpClient + fiddler为基础的. 最近在学jsp,闲来无事,做点东西锻炼锻炼,也可以学习学习,想学习数据抓包.第一印象就是我们学校的正方教务管理系 ...
- 数据抓包(网络爬虫)-正方教务管理系统登录后获取自己的课程表
上次发的博客是:数据抓包(网络爬虫)-正方教务管理系统登录 好的,今天我们来抓自己的课程表数据,说实话,都会模拟登录了,抓个课程表的什么就不再话下了. 直接来步骤: 1.首先还是监视浏览器中得到自己课 ...
- python爬虫登录正方教务管理系统获取成绩数据
本程序以四川理工学院教务管理系统为例.... 准备工作:1.ruquests库的使用(或者urllib也可行) 2.正则表达式的书写 3.HTTP通信基础 4.一些解析库的使用 准备一个浏览器监视工具 ...
- 一个爬进正方教务系统的爬虫的诞生
我的新博客地址: http://jujuba.me/ 0x00. 准备工作 工具: chrome python 一些python库,主要是requests 要想爬进教务系统,首先要知道教务系统的网址 ...
- 模拟登陆新版正方教务管理系统
写在前面 已经过了一年半,网站有所改版,目前是可以正常登录的,获取信息的那几个url不是直接返回JSON了,需要自己去解析数据. 引入 与很多高校一样,西安皇家邮电大学一直钟爱于正方教务管理系统. 前 ...
- 爬取正方教务管理系统获取学生信息
新版正方教务系统请点这里:模拟登陆新版正方教务管理系统(获取学籍信息.课表和成绩) 最近想学点爬虫玩玩,拿学校的教务系统练练手.学校与很多高校一样,用的是正方教务管理系统,非常的不好用,经常出现登陆不 ...
- 正方教务管理系统后台敏感日志查看漏洞
正方教务管理系统作为正方软件的主打产品,从其官网了解到--截止至2012年10月,已有1,000余所高校使用了其数字化校园信息平台.从百度的最新检索结果也可见,成片成片的高校目前正在使用该教务系统. ...
- 教务系统自动评教_新版正方教务管理系统自动评教脚本
本脚本适用于新版正方教务管理系统学生评教页面. 使用注意: 1,本脚本必须在Chrome内核浏览器使用,其余内核(IE,Edge等)无法使用! 2,如果您使用的是360浏览器/QQ浏览器/百度浏览器等 ...
- python 正方教务管理系统抢课脚本(仅供学习)
正方教务管理系统抢课脚本 (仅供学习请勿它用!!!) 正方教务管理系统抢课脚本 进入正题 正方教务管理系统抢课脚本 该脚本使用python代码模拟发包实现.教务管理系统版本可能有所不同.请根据实际情况 ...
最新文章
- 8道Python基础面试练习题
- python super
- oracle存储过程无效字符_Oracle存储过程基础+ 错误代码
- gzip, gunzip, zcat - 压缩或展开文件
- rect函数_R函数不会写,quot;抄quot;总会吧!
- ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案
- 你的脑容量(每日一练)
- 软件工程的极端所有权
- 实现国标GB28181视频流媒服务平台EasyGBS-公安部国标35114(GB35114)A级检测说明
- 电商项目——分布式基础概念和电商项目微服务架构图,划分图的详解——第二章——上篇
- 百度地图api基本用法
- matlab trapz二重积分函数_用MATLAB计算某些区域上的二重积分666.doc
- 机智云AIoT开发平台,让物联网产品开发和运营有迹可循
- OpenCV论道:为什么我的伽马校正函数只有一行?
- 运维之DNS服务器Bind9配置解析和基础示例及附带命令
- 关于TLC2543不常见问题
- vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息
- nested exception is io.lettuce.core.RedisCommandExecutionException: MOVED 7514 100.71.1.91:6380
- sws_getContext函数详细使用
- 手写表单及h5表单验证举例
热门文章
- sharding-jdbc4.1.1 分库分表后 mysql查询优化(count)
- WSL2+Docker环境搭建
- 谷歌开发者账号关联问题,如何避免Google Play账号关联问题
- ISO20000认证材料大全
- Vue3实现拖拽定制化首页
- 计算机二级基础知识ppt,计算机二级公共基础知识软件工程基础ppt培训课件
- word文档中标题中的黑点如何去除
- 小米回应造车传闻;电子竞技员国家职业标准出炉;库克称,很多功能来自中国消费者反馈​ | EA周报...
- 阿里云高新技术企业认定介绍及常见问题
- 淘宝店铺(宝贝描述模板)克隆攻略