该系统主要是用来快速查询湘潭大学学生的成绩绩点和其他的一些经常要查询的信息的系统。
基本思想是模拟登陆和爬取网页信息。
主要用到是Spring 和SpringMVC,因为考虑查询的数据可能总是会有变动,所以暂时没有使用数据库来存储信息,查询到的信息直接传到前台展示。
由于湘大的教务系统验证码比较简单,这里简单的说一下步骤。
- 1.下载验证码图片(JiaoWuUtil.java中的getYZCode方法)
- 2.处理图片
- ①:去背景色(MyCodeUtil.java中的myRemoveBackgroud方法)
- 主要是判断像素点的color中的红绿蓝三个值是否超过一个设定的值来重新对像素点上色,以此将图片变为只有黑白两色来去除背景中的干扰像素。
- ②:分割图片(MyCodeUtil.java中的setMod方法)
- ①:去背景色(MyCodeUtil.java中的myRemoveBackgroud方法)
- 3.特征点判断(MyCodeUtil.java中的setMod方法)
- ①:由于该验证码的种类少所以可以使用特征点来判断验证码的种类
创建一个httpPost请求,带上第一次访问教务系统首页的cookie和下面的四个数据访问即可。
湘大教务系统模拟登录需要4个元素
-
1.用户名(学号)
-
2.密码(教务系统密码:自己设置的)
-
3.encode(湘大教务系统自己设置的一个值,需要通过计算得到)
-
①:得到该数据需要另一个网站的data数据,可以通过get请求得到的response得到。
-
②:JiaoWuUtil.java中的getEncoded方法计算出
-
-
4.验证码(长度为4的字符串)
创建要爬取网站相对应的HttpGet请求或HttpPost请求,如何用HTTPResponse来接受返回的数据,再通过Pattern和Matcher两个类来匹配相应的信息进行爬取,细节见代码。
湘潭大学图书馆爬取的数据编码可能与编译器的默认编码不同会导致数据乱码。
可以通过EntityUtil的toString方法得到HTTPResponse中的entity数据,如何通过String类的构造方法来设置编码,得到不乱码的内容。
由于本人前台不是很熟练,前台展示页面不是很美观就不放图片了。
大致功能有如下几个(平时经常要用的)
- 1.学生个人学科成绩,绩点和排名
- 2.课表
- 3.学生个人借书信息
- 4.图书信息查询
如果出现无法登录的情况可能是学校的系统出了问题。