小爱课程表 新版正方教务系统通用代码 作者: Chuwen 时间: 2020-06-10 分类: JQuery 评论 ![Snipaste_2020-06-10_20-10-18.png][1] ![Snipaste_2020-06-10_20-10-18.png][2] # 代码 ``` function scheduleHtmlParser(html) { //除函数名外都可编辑 //传入的参数为上一步函数获取到的html //可使用正则匹配 //可使用解析dom匹配,工具内置了$,跟jquery使用方法一样,直接用就可以了,参考:https://juejin.im/post/5ea131f76fb9a03c8122d6b9 //以下为示例,您可以完全重写或在此基础上更改 let course = $('#table1 .timetable_con'); var courseInfos = [];//课程信息 var sectionsTimes = [];//节次信息,非必须 for (let i = 0; i < course.length; i++) { var _name = $(course[i]).find("p[class=title]").text();//课程名 var _day_session = $(course[i]).parent().attr("id").split("-"); var day = _day_session[0];//星期几的课 var _postion = '',//上课地点 _teacher = '',//教师 sectionsTmp = [],//临时储存节次 array weeksTmp = [];////临时存储周次 array $(course[i]).find("p").each(function (index, item) { var _typeName = $(this).children("span").attr("data-original-title");//类别名。节/周、上课地点、教师、教学班名... if(_typeName !== undefined) _typeName = _typeName.trim(); var _text = $(this).text().trim(); if (_typeName === '节/周') { var _length = _text.match(/\((.+?)节\)/); //判断是否存在节次 if (_length === null) { return 0;//不存在就跳出本次循环 } //当前课程节次信息 sectionsTmp = function () { let num = _length[1].split("-"); let tmp = []; for (let i = parseInt(num[0]); i <= parseInt(num[1]); i++) { tmp.push({ section: parseInt(i) }); } return tmp; }(); //临时存储周次 weeksTmp = function () { var tmp = [], _week = _text.replace(_length[0], "").split("周")[0],//周次 _weekRange = _week.split("-"), _weeekType = -1;//-1:不分单双周,1:单周,0:双周 if (_text.indexOf("(单)") !== -1) { _weeekType = 1; } else if (_text.indexOf("(双)") !== -1) { _weeekType = 0; } for (let i = parseInt(_weekRange[0].trim()); i <= parseInt(_weekRange[1]); i++) { if (i % 2 === _weeekType && _weeekType !== -1) tmp.push(i);//特殊单双周压入 if (_weeekType === -1) tmp.push(i);//部分单双周压入 } return tmp; }(); } else if (_typeName === '上课地点') { _position = _text; } else if (_typeName === '教师') { _teacher = _text; } }); courseInfos.push({ name: _name,//课程名 position: _position,//位置 teacher: _teacher,//教师名 day: day, weeks: weeksTmp,//哪几周有课 sections: sectionsTmp,//哪几节次 }) } console.info(courseInfos); return { courseInfos: courseInfos } } ``` [1]: https://cdn.nowtime.cc/2020/06/10/1914996304.jpg [2]: https://cdn.nowtime.cc/2020/06/10/383694665.png