爬取正方教务管理系统获取学生信息

本文介绍了如何使用Java编写爬虫模拟登录正方教务管理系统,详细阐述了登录过程,包括分析登录URL、获取Cookies和__VIEWSTATE、处理验证码以及登录步骤。还讲解了获取学生个人信息的细节,如需要携带Cookies和Referer。最后提到了在测试过程中遇到的重定向问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新版正方教务系统请点这里:模拟登陆新版正方教务管理系统(获取学籍信息、课表和成绩)

最近想学点爬虫玩玩,拿学校的教务系统练练手。学校与很多高校一样,用的是正方教务管理系统,非常的不好用,经常出现登陆不上去、卡死的情况,主页如下图所示:

主页

主页地址:http://222.24.62.120

模拟登录


1. 分析登录的URL和所需提供的数据

我们输入学号、密码和验证码登录后,点击登录。这时浏览器会向服务器提交一个POST请求:

登录请求

我们由上图中的数据可知,登录请求的URL地址为:

http://222.24.62.120/default2.aspx

所提交的数据除了学号、密码、验证码、用户类型,还有其他的数据:

  • __VIEWSTATE在源码中可以找到,是一个隐藏域,猜测是用来做验证
<input type="hidden" name="__VIEWSTATE" value="dDwxNTMxMDk5Mzc0Ozs+lYSKnsl/mKGQ7CKkWFJpv0btUa8=" />
  • Textbox1是上次登陆的用户学号
  • RadioButtonList1通过看源码可知为%D1%A7%C9%FA,是”学生”经过URL编码(gb2312)后的字符串。
  • 后四个为空可以不用管

创建一个类:ConnectJWGL
属性如下:

    private String stuNum;
    private String stuName;
    private String __VIEWSTATE = "";
    private Map<String,String> cookies = new HashMap<>();
    private Connection connection;
    private Connection.Response response;
    private Document document;

2. 获取Cookies和__VIEWSTATE

给主页发一个请求,然后将响应的Cookies保存下来。并在其中提取__VIEWSTATE的值。

在ConnectJWGL类中添加一个connectIndex方法
代码如下:

    //接获取cookies和__VIEWSTATE
    public void connectIndex(){
        try{
            //获取连接
            connection = Jsoup.connect("http://222.24.62.120");
            connection.header("User-Agent",// 配置模拟浏览器
                    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
            response = connection.timeout(3000).execute();
            //保存Cookies
            cookies = response.cookies();
            // 将响应转换为Dom树,以便获取__VIEWSTATE
            d
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值