Java爬取正方教务,获取成绩信息

github.superwuit.cn/** * 2018-2-3 21:15:16 * @Description: 模拟登陆正方教务获取成绩HTML页面,并利用正则表达式提取成绩信息 * @version: 1.0 * @author: dawuit */本程序以北京师范大学珠海分校为例预备知识:HTTP协议session和cookie保持登陆
摘要由CSDN通过智能技术生成

github.superwuit.cn

/**
 * 2018-2-3 21:15:16
 * @Description: 模拟登陆正方教务获取成绩HTML页面,并利用正则表达式提取成绩信息
 * @version: 1.0
 * @author: dawuit
 */

本程序以北京师范大学珠海分校为例

预备知识:

  1. HTTP协议
  2. session和cookie保持登陆状态机制
原理:
 当我们输入学号、密码后点击登陆,浏览器会把我们的学号、密码或者验证码,post到服务器的一个地址,服务器接受到POST请求后,首先验证验证码是否正确,然后验证学号、密码是否正确,如果其中有一个不正确的话,直接返回验证码错误或者学号不存在或者密码错误。如果匹配正确,那么服务器会生成随机串(就是SessionId)来表示登陆成功的状态,并返回给浏览器,浏览器得到这个串之后,作为cookies保存在浏览器,每次要获取登陆后里面的数据时都会提交这个串来验证是否已经登陆。

一、分析

 1.本例没有验证码,如果有验证码可以爬取验证码图片,借助图像处理库(opencv等)进行识别,获取识别结果后添加到POST请求中。


2.对登陆过程进行抓包,我们可以看到POST提交的表单信息,其中最重要的就是RadioButtonList1、TextBox1、TextBox2这三个字段,分别对应登陆身份、学号、密码。其他字段信息可以直接复制提交。

3.密码错误则服务器返回原页面信息,其中有“密码错误”字样,利用正则表达式匹配即可判断密码正确与否(不知正则表达式可自行百度)。登陆成功返回304状态码重定向到http://es.bnuz.edu.cn/xs_main.aspx页面。并且返回从cookie字段返回sessionID,这时候我们要从响应头中获取这个值,并在以后对成绩页面的请求中以cookie字段带上此值,以保持登陆状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值