前言

之前写了模拟登陆的过程,因为爬课表需要先登录,所以没看过之前那篇博客的先回去看一下怎么通过模拟登陆获取cookie,下面是我用这些写的一个小程序和安卓应用

分析

因为新版教务系统前端所使用的方式已经非常老了,他所有的页面都是采用jsp写的,这种写法的特点就是他会在后台就将页面渲染好再往前端发,所以没有json接口,我们要提取课表的话只能通过在源代码中提取

准备

我们此次获取数据需要用到的java类是:HttpURLConnection,解析html采用的是:Jsoup,第一个是jdk自带的类,第二个是一个第三方jar包

开始

课表页面地址:http://218.75.197.123:83/jsxsd/xskb/xskb_list.do ,
我们右键检查发现这是一个表格布局,我们找到其中一项拿出来分析一下
我们发现第一节课的所有信息都在这里面了,我们要的就是这里面的信息,要将这几行代码变成我们能过使用的json也很简单,我们首先用Jsoup将整份代码变成dom对象,然后我们通过两层循环,分别循环课表的行和列,然后每一个格子里面都是上面图片中格式的内容,先将这部分的html单独提取出来,用Element的html()这个方法,然后我们使用
来将这部分代码分割,不难发现不带的就是课程名字部分,带的我们可以根据title中的内容区分这是什么部分,好了现在基本可以解析出这整张课表了

代码
     //通过模拟登陆获取到的cookieString cookie = stu.getSession() ;//定义请求的参数 , 这个类是我自己对HttpURLConnection进行封装的,这套代码是模仿xutils进行封装的,有兴趣的同学可以找我要代码RequestParams request = new RequestParams("http://218.75.197.123:83/jsxsd/xskb/xskb_list.do", "POST") ;request.setData("xnxq01id="+year);request.addHead("cookie", cookie);//保存最后整理的结果final JSONObject resultJson = new JSONObject() ;//这也是我对HttpURLConnection这个类进行封装的Http.run(request , new NetFunction() {@Overridepublic void success(ResponseParams restult) {//result是请求结果,里面有响应码,数据,响应头,服务器返回的新cookieDocument html = Jsoup.parse(restult.getData()) ;JSONObject kb = new JSONObject() ;JSONArray classesJson = new JSONArray() ;kb.put("timeTable", JSONObject.parseObject(timeTable)) ;kb.put("kb", classesJson) ;resultJson.put("data" , kb) ;//按课次遍历课表Elements rows = html.getElementById("kbtable").getElementsByTag("tr") ;for(int i=1 ; i<rows.size() - 1 ; i++){//按星期遍历课表Elements columns = rows.get(i).getElementsByTag("td") ;for(int j=0 ; j<columns.size() ; j++){Element dataHtml = columns.get(j).getElementsByClass("kbcontent").get(0) ;JSONObject classJson = new JSONObject() ;resultJson.put("code" , 200) ;resultJson.put("msg" , "成功") ;String[] dataArray = dataHtml.html().replaceAll("&nbsp;", "").replaceAll("\n", "").split("<br>") ;for(String s : dataArray){if(s.contains("<font") && s.contains("老师")){String teacher = s.replaceAll("<.*?>", "") ;classJson.put("teacherName", teacher) ;}else if(s.contains("<font") && s.contains("周次(节次)")){String zc = s.replaceAll("<.*?>", "") ;classJson.put("classZc", zc) ;}else if(s.contains("<font") && s.contains("教室")){String classroom = s.replaceAll("<.*?>", "") ;classJson.put("classroom", classroom) ;}else if(s.contains("--------")){if(classJson.size() != 1){classJson.put("classtime", i) ;classJson.put("day", j+1) ;classesJson.add(classJson) ;}classJson = new JSONObject() ;}else{if(classJson.getString("className") == null){classJson.put("className", s.replaceAll("<.*?>", "")) ;}else{classJson.put("className", classJson.getString("className")+s.replaceAll("<.*?>", "")) ;}}}if(classJson.size() != 1){classJson.put("classtime", i) ;classJson.put("day", j+1) ;classesJson.add(classJson) ;}}}}@Overridepublic void faild() {resultJson.put("code", "500") ;resultJson.put("msg", "获取数据失败") ;resultJson.put("data", "") ;}@Overridepublic void error(Exception e) {resultJson.put("code", "500") ;resultJson.put("msg", "服务器异常") ;resultJson.put("data", "") ;}});

以上就是整个课表整理的过程,代码由于用到了一部分自己封装的东西,我后续会把整个爬教务系统的代码上传到我的github上去,目前还在写,又需要的也可以直接加我qq:1730145232

湖南工业大学教务系统爬虫(课表获取篇)相关推荐

  1. 湖南工业大学教务系统爬虫(模拟登陆篇)

    湖南工业大学教务系统爬虫(模拟登陆篇) 之前写了一个教务系统的爬虫程序,可以根据用户要求爬取任何一部分的数据,也可以模拟提交数据,可能这也是部分工大计算机学生比较感兴趣的,所以今天就在这分享一下整个的 ...

  2. 新版方正教务系统爬虫

    新版方正教务系统爬虫 技术 解释 Python 2.7 BeautifulSoup 4.X Pycharm 2017 Firefox - Firebug - 新版教务处地址 218.199.228.4 ...

  3. 拟物校园 | 拟物校园,一个高校教务系统爬虫,现支持正方教务、青果教务。

    特别声明:除非注明,否则均为 夏末浅笑博客 原创文章,禁止任何形式转载 nivinEdu 拟物教务,一个高校教务系统爬虫 github:https://github.com/nivin-studio/ ...

  4. 湖南工业大学大学计算机教育网,湖南工业大学教务管理系统入口http://jwc.hut.edu.cn/...

    一.湖南工业大学教务管理系统入口及简介 湖南工业大学是一所具有60年办学历史的综合性大学,是"服务国家特殊需求博士人才培养项目"高校.2006年2月,经教育部批准,学校由株洲工学院 ...

  5. 广州商学院Python正方教务系统爬虫(获取个人信息成绩课表修改密码)

    使用python的requests库简单爬取,使用xpath解析内容 可以获取个人信息.个人照片.成绩单和课表 github地址:https://github.com/PythonerKK/GZCC- ...

  6. python实现高校教务管理系统_Python实现新版正方教务系统爬虫

    目录~ 引入 需要什么软件? 模拟登陆 代码实现(登陆) 模拟获取成绩 代码实现(获取成绩) 解析成绩 测试(完成图) 作者的话 引入 就在我刚刚写完旧版正方系统爬虫的时候(旧版正方系统爬虫代码) 学 ...

  7. Python实现新版正方教务系统爬虫(二)

    前言 哎对不起 我可能是silly boy 我想在学校里把去年的坑填了 但是发现新版的教务系统代码没传到git上 我现在就成了个对着空ide发呆的憨憨(代码在家里啦 所以填坑就再过会吧 那就稍微闲聊一 ...

  8. 正方教务系统爬虫实现

    主要库 requests,json,re 分析网页 第一眼就看到网页后缀是.aspx,也就是用的ASP.NET技术,不算老熟人有兴趣可以了解下https://baike.baidu.com/item/ ...

  9. 教务系统爬虫收集学生成绩信息

    文章目录 1 总体介绍 2 获取token的思路 3 通过token访问成绩页面 4 解析成绩页面返回的json 5 导出数据到Excel 1 总体介绍 近日学校上线了家长督学系统.通过该系统,输入学 ...

最新文章

  1. C语言关闭文件总是错误,C语言程序错误,不能正常读写文件,求解啊
  2. opencv 3.1编译 linux,Ubuntu 编译安装 OpenCV 3.1
  3. Redis-序列化和存储模式
  4. cad绘制椭圆的方法有几种_CAD新手入门教学:如何绘制矩形?
  5. python购物记录程序_python ATM购物程序
  6. 博客园访问量有些小,我就没有必要在复制一份了,博客园就这样吧,继续CSDN了。...
  7. struts2值栈,OGNL表达式,interceptor
  8. Android实现拍照并存储功能,Android实现拍照及图片显示效果
  9. arcgis不闭合线转面_【干货】ArcGIS矢量面转点、点转面,面矢量转点矢量方法讲解,值得学习!...
  10. python中range 函数_Python range()函数用法图文详解
  11. 五、bootstrap-fileinput
  12. 如何使用 Numbers 筛选出特定种类的资料?
  13. adobe bridge cs6怎么卸载_怎么取消adobe bridge cs6 更新
  14. linaro 网站资源
  15. 李银河博士,作个幸福的犬儒吧
  16. 在线Markdown table生成工具,Markdown 表格编辑器
  17. mysql salve从库设置read only 属性
  18. 衡量软件交付性能的4个指标
  19. win7登录后,显示黑屏
  20. ylbtech-公司-滴滴出行:滴滴出行

热门文章

  1. 小肚皮最新版本_小肚皮下载_小肚皮安卓版5.20 - 系统城
  2. 变形金刚2:卷土重来 DVD 高清BT下载
  3. WIN10 设置或取消自动关机
  4. Redis进阶篇:发布订阅模式原理与运用
  5. Unix哲学学习笔记
  6. 【算法提高—蓝桥杯】阮小二买彩票
  7. r2000s_昭阳R2000S笔记本一键重装win7系统教程
  8. python 廖雪峰_实战 - 廖雪峰的官方网站
  9. 小学语文一年级~六年级生字表合集描红临摹字帖PDF直接A4纸打印版
  10. 卸载计算机安全证书,如何卸载ssl证书_卸载根证书的操作指南_什么是SSL卸载,SSL卸载优点有哪些? - 沃通SSL证书...