HttpClient实现获取辽宁大学课程表

项目叙述

通过HttpClient、Jsoup、AJAX等技术,实现获取辽宁大学课程表,并呈现出来。

这里写图片描述

成功登录后,提示

这里写图片描述

课表展现:

这里写图片描述

实现原理简述

1.分析目标源文件

这里写图片描述

得知登录是用post方法向http://jwgl.lnu.edu.cn/pls/wwwbks/bks_login2.login发送请求,带有两个参数stuidpwd分别对应学号和密码

这里写图片描述

获取课表是向http://jwgl.lnu.edu.cn/pls/wwwbks/xk.CourseView请求
这个用get方法就可以。

2.模拟登录,并获取课表

使用HttpClient模拟post登录,再模拟get请求获取课表的地址
得到课表信息的html代码


<html>
      <head>
      <title>课表</title>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      <LINK href="/zhxt_bks/style.css" rel="stylesheet" TYPE="text/css">
    <script language="JavaScript1.2" src="/zhxt_bks/nocache.js"></script>
      </head>
      <BODY topmargin="5">
      <div align="center" CLASS="td1">
      <TABLE width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
           <td width="20" height="30"><div align="center"><span CLASS="td1"><strong><img src="/zhxt_bks/pic0801.gif" width="18" height="18"></strong></span></div></td>
           <td valign="middle"><span CLASS="td1"><strong>学生选课系统</strong></span></td>
      </tr>
      </TABLE>
      <strong><font color="#990000"> </font></strong></div>

<span class="td1">信息学院 软件工程专业 刘之帅(161407212)</span>
<BR>
<span class="td1">你共选择了 28 学分</span><BR>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bgcolor="#EAE2F3" bordercolorlight="#A545A3" bordercolordark="#FFFFFF">
          <tr>
          <td>
<table width="100%" border="0" cellspacing="2" cellpadding="3">
             <tr>
             <td bgcolor="#E7DCF1"><div align="center" CLASS="td1"><strong><font color="#990000">已经安排时间地点的课程:</font></strong></div></td>
             </tr>
             </TABLE>

<table width="100%" border="0" cellpadding="2" cellspacing="3" bgcolor="#F2EDF8">
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>&nbsp</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期一</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期二</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期三</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期四</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期五</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期六</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>星期日</strong></p></td>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第一节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">
<BR>高等数学(下)(必修)/王敏<FONT COLOR="#FF0000">16级信息学院(除信息管理专业),16测控、16电科、16电气、16环境工程专业学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
高级语言程序设计(必修)/宣伟宏<FONT COLOR="#FF0000"></FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
高等数学(下)(必修)/王敏<FONT COLOR="#FF0000">16级信息学院(除信息管理专业),16测控、16电科、16电气、16环境工程专业学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
普通物理A(上)(必修)/张美霞<FONT COLOR="#FF0000">15级数学院、16级信息学院(除信息管理),16测控、16电科、16电气专业学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
大学英语(二)(必修)/初彦霞<FONT COLOR="#FF0000">16级崇山校区学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第二节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">
高级语言程序设计(必修)/宣伟宏<FONT COLOR="#FF0000"></FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
普通物理A(上)(必修)/张美霞<FONT COLOR="#FF0000">15级数学院、16级信息学院(除信息管理),16测控、16电科、16电气专业学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
大学英语(二)(必修)/初彦霞<FONT COLOR="#FF0000">16级崇山校区学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
高等数学(下)(必修)/王敏<FONT COLOR="#FF0000">16级信息学院(除信息管理专业),16测控、16电科、16电气、16环境工程专业学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第三节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
马克思主义基本原理(必修)/王晓红<FONT COLOR="#FF0000">16级崇山校区学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
离散数学(必修)/朱红宁<FONT COLOR="#FF0000"></FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
离散数学(必修)/朱红宁<FONT COLOR="#FF0000"></FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第四节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">
体育(二)(必修)/王越鹏<FONT COLOR="#FF0000">网球,崇山校区</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
军事理论(必修)/金一哲<FONT COLOR="#FF0000">16级崇山校区学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
马克思主义基本原理(必修)/王晓红<FONT COLOR="#FF0000">16级崇山校区学生选</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
创新性思维与创新方法(任选)/刘畅<FONT COLOR="#FF0000">崇山校区</FONT>
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
<td bgcolor="#EAE2F3"><p align="center">
&nbsp;</p></TD>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第五节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第六节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#E2D8EF"><p align="center"><strong>第七节</strong></p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
</TR>
</table>
</td>
</tr>
</table>
<BR>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bgcolor="#EAE2F3" bordercolorlight="#A545A3" bordercolordark="#FFFFFF">
          <tr>
          <td>
<table width="100%" border="0" cellspacing="2" cellpadding="3">
             <tr>
             <td bgcolor="#E7DCF1"><div align="center" CLASS="td1"><strong><font color="#990000">时间地点如下</font></strong></div></td>
             </tr>
             </TABLE>

<table width="100%" border="0" cellpadding="2" cellspacing="3" bgcolor="#F2EDF8">
<td bgcolor="#E2D8EF"><p align="center"><strong>课程名称</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>选课限制说明</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>课程号</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>课序号</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>课程属性</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>考试类型</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>上课地点</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>上课时间</strong></p></td>
<td bgcolor="#E2D8EF"><p align="center"><strong>上课周次</strong></p></td>
<TR>
<td bgcolor="#EAE2F3"><p align="center">高等数学(下)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级信息学院(除信息管理专业),16测控、16电科、16电气、16环境工程专业学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">0920426&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼419&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1-1&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">高等数学(下)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级信息学院(除信息管理专业),16测控、16电科、16电气、16环境工程专业学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">0920426&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼419&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">5-2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">高等数学(下)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级信息学院(除信息管理专业),16测控、16电科、16电气、16环境工程专业学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">0920426&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼419&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3-1&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">普通物理A(上)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">15级数学院、16级信息学院(除信息管理),16测控、16电科、16电气专业学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1010014&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼403&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">4-1&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">普通物理A(上)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">15级数学院、16级信息学院(除信息管理),16测控、16电科、16电气专业学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1010014&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼403&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2-2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">高级语言程序设计&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000"></FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1410044&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼103&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1-2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1-13周上&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">高级语言程序设计&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000"></FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1410044&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼301&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2-1&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1-13周上&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">离散数学&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000"></FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1420053&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼319&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">4-3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">单周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">离散数学&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000"></FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1420053&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼319&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">5-3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">大学英语(二)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级崇山校区学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2111024&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">6&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼301&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3-2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">大学英语(二)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级崇山校区学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2111024&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">6&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼301&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">5-1&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">马克思主义基本原理&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级崇山校区学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2210153&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼501&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2-3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">马克思主义基本原理&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级崇山校区学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2210153&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">3&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼501&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">4-4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">双周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">体育(二)&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">网球,崇山校区</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2310021&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">19&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">1-4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">军事理论&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">16级崇山校区学生选</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2310051&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">必修&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考试&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">蕙星楼601&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2-4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">全周上课&nbsp;</p></td>
</TR>
<TR>
<td bgcolor="#EAE2F3"><p align="center">创新性思维与创新方法&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center"><FONT COLOR="#FF0000">崇山校区</FONT>&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">F490022&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">任选&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">考查&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">东配楼302&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">5-4&nbsp;</p></td>
<td bgcolor="#EAE2F3"><p align="center">2,6,10,15周上&nbsp;</p></td>
</TR>
</table>
</td>
</tr>
</table>
</BODY></HTML>
<HR>
<span class="t">
操作成功!
</span>

通过观察得知,课表信息在第二个table元素里面,而且所有课表信息的bgcolor都是#EAE2F3,同时,font元素里面的内容并不是我们需要的。
所以,我们使用jsoup解析出所有bgcolor是#EAE2F的td并删除里面的font元素,获取这些元素的text,存到数组中。

    public List<String> DealInfo(String Info){
        List<String> result = new ArrayList<String>();
        Document doc = Jsoup.parse(Info);
        Element table = doc.select("table").get(1); 
        table.select("font").remove();
        Elements tds = table.select("td[bgcolor=\"#EAE2F3\"]");
        for (Element td : tds) {
              result.add(td.text());
//            System.out.println(td.text());
            }

        return result;

    }

3.将数组转变成json

4.前端ajax请求,获取json转化为数组

后台源码

Dodeal.java

package src.lnu.lzs.deal;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;



public class Dodeal {

    private  HttpUtils httpUtils = new HttpUtils();


    /*
     * 判断是否登录成功
     * @param username 用户名
     * @param password 密码
     * @return boolean
     */
    public boolean Succeed(int username,String password){
        String param = "stuid="+username+"&pwd="+password;

        boolean succeed = true ;
        try {
            String htmlTxt = httpUtils.sendPost("http://jwgl.lnu.edu.cn/pls/wwwbks/bks_login2.login", param);
            Document doc = Jsoup.parse(htmlTxt);
            Elements body = doc.select("body"); 
            String bodyText = body.text();
            System.out.print(bodyText);
            if(bodyText.equals("你输入了错误的学号或密码,不能登录!")){
                succeed=false;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return succeed;
    }

    /*
     * 获取课表信息
     * @return HTML代码
     */
    public String getInfo() throws IOException{

        String html = httpUtils.sendPost("http://jwgl.lnu.edu.cn/pls/wwwbks/xk.CourseView","");
        httpUtils.close();
        return html.replace("&nbsp;", " ");
    }
    /*
     * 将课表HTML处理成数组
     * @param HTML代码
     * @return 数组
     */
    public List<String> DealInfo(String Info){
        List<String> result = new ArrayList<String>();
        Document doc = Jsoup.parse(Info);
        Element table = doc.select("table").get(1); 
        table.select("font").remove();
        Elements tds = table.select("td[bgcolor=\"#EAE2F3\"]");
        for (Element td : tds) {
              result.add(td.text());
//            System.out.println(td.text());
            }

        return result;

    }
    /*
     * 将数据处理成json
     * @param 数组
     * @return json
     */
    public String ListToJosn(List<String> temp){
        JSONArray jsa = JSONArray.fromObject(temp);
        System.out.print(jsa);
        return jsa.toString();
    }
}

HttpUtils.java

package src.lnu.lzs.deal;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import org.apache.catalina.connector.InputBuffer;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
import org.apache.http.conn.util.PublicSuffixMatcher;
import org.apache.http.conn.util.PublicSuffixMatcherLoader;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.LaxRedirectStrategy;
import org.apache.http.util.EntityUtils;

public class HttpUtils {
    private CloseableHttpClient httpClient = HttpClients.custom()
                .setRedirectStrategy(new LaxRedirectStrategy())
                .build(); 
    private CloseableHttpResponse response = null;
    /**
     * sendPost 发送post请求
     * @param url
     * @param param
     * @return
     * @throws IOException
     */
    public String sendPost(String url, String param) throws IOException {
        String result = null;
//  


        try {
            HttpPost hp = new HttpPost(url);

            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000)
                    .setConnectTimeout(15000)
                    .setConnectionRequestTimeout(15000)
                    .build();

            StringEntity stringEntity = new StringEntity(param, "UTF-8");
            stringEntity.setContentType("application/x-www-form-urlencoded");
            stringEntity.setChunked(false);

            hp.setEntity(stringEntity);
            hp.setConfig(requestConfig);


            response = httpClient.execute(hp);
            System.out.println(response.getStatusLine());
            result = EntityUtils.toString(response.getEntity(), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();// TODO: handle exception
        }finally{

        }
        return result;
    }
    public void close() throws IOException {
        httpClient.close();
        response.close();
    }

}

TheServlet.java

package src.lnu.lzs.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import src.lnu.lzs.deal.Dodeal;

/**
 * Servlet implementation class TheServlet
 */
@WebServlet("/TheServlet")
public class TheServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TheServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//      System.out.println("调用get方法:");

    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("POST方法");
        Dodeal dodeal = new Dodeal();
        int stdId =Integer.parseInt(request.getParameter("username"));
        String password = request.getParameter("password"); 

        boolean succeed = dodeal.Succeed(stdId, password);

        if(succeed){
            String html = dodeal.getInfo();
            String result = dodeal.ListToJosn(dodeal.DealInfo(html));
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().println(result);
        }else{
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().print("NULL");
        }
    }


}

反思与总结

拒绝懒癌!每天进步一点点!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值