正方教务系统课程表开发.docx
《正方教务系统课程表开发.docx》由会员分享,可在线阅读,更多相关《正方教务系统课程表开发.docx(12页珍藏版)》请在冰豆网上搜索。
正方教务系统课程表开发
课表开发流程
用户通过教务处查询到课表的流程如下:
1、访问教务处登陆页面,填写用户名、密码和验证码,提交,进入教务处。
2、找到查询课表的地方,点击进入。
这几步实际上也就是对教务处的请求操作,只是通过浏览器实现罢了。
我们通过开发实现该流程步骤如下:
1、模拟登陆、2、读取课表页面、3、解析课表页面得到课表数组数据。
以下以淮阴师范学院(正方系统)为例进行介绍,其中模拟登陆和获取课表页面可以通过浏览器的交互来进行解释:
一、模拟登陆
这一步的主要作用就是获取cookie,因为访问获取课表页面时服务器端会对是否已经登陆这一项进行验证。
首先访问登录页面http:
//202.195.113.149/default2.aspx,输入用户名、密码、验证码,点击“登陆”按钮。
这一过程其实就是发送一个post请求:
其中需要的参数如下:
1、用户名、密码,由用户自己输入;对于验证码,我们只需要访问对应的验证码地址,然后将验证码呈现给用户,供用户自己输入即可。
验证码的地址可以通过在图片上右击,在出现的快捷菜单中点击“复制图片地址”获得:
2、RadioButtonList1,Button1参数的值是固定的,分别对应与页面上的两个input,可以直接复制:
3、__VIEWSTATE和__EVENTVALIDATION,这两个参数是页面上的隐藏域,通过查看页面的源代码可以看到:
所以我们需要做的事情如下:
1、访问登陆页面,得到隐藏域的信息:
二、将用户名、密码、验证码的输入框和验证码呈现给用户,让用户填写如下信息,提交表单
3、将隐藏域信息、用户名、密码、验证码和固定参数拼凑起来,作为登录请求时提交的参数,发送登陆请求:
4、通过解析登陆返回的结果得到cookie信息:
二、访问课表页面
界面操作方式如下:
这个过程相当于get方式请求http:
//202.195.113.149/xskbcx.aspx?
xh=231202001&xm=%B3%C2%B3%AC&gnmkdm=N121603,需要带上登陆时返回的cookie信息:
其中用户名在模拟登陆的时候就已经获得,第三个参数是固定参数,用户姓名则需要通过访问主页得到html,解析页面代码来获取:
本程序中的http请求通过curl函数实现,而在登陆的时候进行设置跳转为1,如下所示:
,登陆请求结果就是主页。
所以我们需要做的事情如下:
1、从登陆结果中解析出姓名:
二、get方式访问http:
//202.195.113.149/xskbcx.aspx?
xh=学号&xm=姓名&gnmkdm=N121603,请求需要带上登录时得到的cookie,返回结果就是我们要的登陆页面。
三、从课表结果页面解析出课表
1、我们先对课表页面进行分析,课表的html代码都在一个table之中,这个table的id为Table1,从第三行开始是课表信息:
其中第一列是“上午”、“下午”、“晚上”,第二列是节次:
我们可以用正则匹配出整块table的代码,然后通过正则匹配出每一行,从第三行开始解析,对于第3、8、12行,由于分别是“上午”、“下午”、“晚上”所在的行,从第三列才开始解析;其他行则从第二列就开始解析:
代码如下:
2、接着分析每个td中的内容,一个td中可能会有多节课的信息,不同的课之间由四个
分隔,其中如果有调课信息,则中间还会有一个font标签,如下图所示:
同一节课的课程名称、上课时间、授课老师和上课地点信息则都由
标签分隔,如下图所示:
代码如下:
3、整个分析的过程体现到代码上,再加上一些具体细节上的控制,最终代码如下:
。