模拟登陆新版正方教务管理系统【可以获取学生基本/课表信息】

写在前面

博主登陆现在还可以正常使用,但是后面登陆成功,获取信息啥的有问题

登陆还是按照学长的来,模拟登陆新版正方教务管理系统

开始

学校教务系统改版,我直接copy博主代码获取学籍那里一直是获取到的是登陆页
测试是用postman直接拿登陆之后的cookie测试,发现可以正常获取数据
发现登陆之前的cookie和登陆之后的cookie发生了变化

 public boolean beginLogin() throws Exception{
        connection = Jsoup.connect(url+ "/jwglxt/xtgl/login_slogin.html");
        connection.header("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
        connection.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");

        connection.data("csrftoken",csrftoken);
        connection.data("yhm",stuNum);
        connection.data("mm",password);
        connection.data("mm",password);
        System.out.println(password);
        response = connection.cookies(cookies).ignoreContentType(true)
                .method(Connection.Method.POST).execute();
        cookies = response.cookies();//增加这行代码,更新cookie
        response = connection.execute();
        document = Jsoup.parse(response.body());
        if(document.getElementById("tips") == null){
            System.out.println("登陆成功");
            return true;
        }else{
            System.out.println(document.getElementById("tips").text());
            return false;
        }
    }

获取基本/学籍信息 这个查询几乎无用,解析不好解析还有很多学校信息不给显示

   public void getStudentInformaction() throws Exception {
        connection = Jsoup.connect(url+ "/jwglxt/xsxxxggl/xsgrxxwh_cxXsgrxx.html?gnmkdm=N100801&layout=default&su="+ stuNum);
        connection.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0");
        response = connection.cookies(cookies).ignoreContentType(true).execute();
        Document document2 = Jsoup.parse(response.body());

        Elements elements = document2.getElementsByClass("form-control-static");
        for (Element e:elements) {
            System.out.println(e.text());
        }
        Element col_xh = document2.getElementById("col_xh");
        System.out.println(col_xh);

    }

获取课表

public void getStudentTimetable(int year , int term) throws Exception {
        connection = Jsoup.connect(url+ "/jwglxt/kbcx/xskbcx_cxXsKb.html?gnmkdm=N2151");
        connection.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
        connection.data("xnm",String.valueOf(year));
        connection.data("xqm",String.valueOf(term * term * 3));
        response = connection.cookies(cookies).method(Connection.Method.POST).ignoreContentType(true).execute();
        JSONObject jsonObject = JSON.parseObject(response.body());
        if(jsonObject.get("kbList") == null){
            System.out.println("暂时没有安排课程");
            return;
        }
        JSONArray timeTable = JSON.parseArray(jsonObject.getString("kbList"));
        System.out.println(String.valueOf(year) + " -- " + String.valueOf(year + 1) + "学年 " + "第" + term + "学期");
        for (Iterator iterator = timeTable.iterator(); iterator.hasNext();) {
            JSONObject lesson = (JSONObject) iterator.next();
            System.out.println("课程:"+lesson.getString("kcmc"));
            System.out.println("节/周:"+"("+lesson.getString("xqjmc")+" "+lesson.getString("jc")+")"+lesson.getString("zcd"));
            System.out.println("上课地点: "+lesson.getString("xqmc")+" "+lesson.getString("cdmc"));
            System.out.println("教师: "+lesson.getString("xm"));
            System.out.println("教学班名称:"+lesson.getString("jxbmc"));
            System.out.println("考核方式:"+lesson.getString("khfsmc"));
            System.out.println("选课备注:"+lesson.getString("kcxz"));
            System.out.println("课程学时组成:"+lesson.getString("kcxszc"));
            System.out.println("周学时: "+lesson.getString("xf"));
            System.out.println("总学时: "+lesson.getString("zxs"));
            System.out.println("学分: "+lesson.getString("xf"));
            System.out.println();
            System.out.println("-----分界线-------");
            System.out.println();
        }
    }
2021 -- 2022学年 第1学期
课程:数据库原理及应用A
节/周:(星期一 1-2节)1-18周
上课地点: 长安校区东区 FF405
教师: 孟彩霞
教学班名称:数据库原理及应用A-0003
考核方式:校考
选课备注:选修
课程学时组成:讲课:44,实验:20
周学时: 4
总学时: 72
学分: 4

-----分界线-------

课程:计算机组成原理
节/周:(星期一 3-4节)1-18周
上课地点: 长安校区东区 FF405
教师: 范琳
教学班名称:计算机组成原理-0001
考核方式:校考
选课备注:必修
课程学时组成:讲课:54,实验:10
周学时: 4
总学时: 64
学分: 4

-----分界线-------

在获取课表的json中还发现了有学生的基本信息(学号,班级,姓名)

  public void getStudentInfo(int year , int term) throws Exception{
        connection = Jsoup.connect(url+ "/jwglxt/kbcx/xskbcx_cxXsKb.html?gnmkdm=N2151");
        connection.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
        connection.data("xnm",String.valueOf(year));
        connection.data("xqm",String.valueOf(term * term * 3));
        response = connection.cookies(cookies).method(Connection.Method.POST).ignoreContentType(true).execute();
        JSONObject jsonObject = JSON.parseObject(response.body());
        JSONObject xsxx = jsonObject.getJSONObject("xsxx");
        System.out.println(xsxx.getString("BJMC"));
        System.out.println(xsxx.getString("XH"));
        System.out.println(xsxx.getString("XM"));
    }

获取成绩现在还是json,一样的

不得不说,中国人还是喜欢用拼音的。。。学校的系统字段都用的拼音。天知道那些大写字母都是啥意思。。。XM,XH,BJMC

参考:模拟登陆新版正方教务管理系统

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值