python爬虫系统课程设计_Python网络爬虫-模拟登陆教务处网站

本文主要介绍如何利用Python的requests库实现学校教务处网站的模拟登陆。关于教务处网站模拟登陆的典型应用主要有课程格子、超级课程表等,教务处网站形式多种多样,但登陆的基本流程类似,即构建表单-提交表单-实现登陆。本文以我浙的教务处网站为例进行模拟登陆演示。

登陆流程分析

首先打开我浙的教务处网站首页,F12打开开发者工具,输入学号、用户名、验证码,点击登陆之后,通过开发者工具可以看到,登陆过程包含3次请求,其中2次为暂时重定向(请求返回值为302代表暂时重定向)。

表单分析

点击’Headers’,如下图所示,易得第一次请求为表单提交(POST提交)。

提交的表单如下:

其中username, password, authcode分别为学号、密码和验证码,后面的lt, Execution, _eventld为表单隐藏值,表单隐藏值是反爬虫的初级手段,那么如何获取表单隐藏值呢?

获取表单隐藏值

表单隐藏值可以在实际登陆前,通过登陆界面表单填写部分的HTML代码获取,由下图所示:

可以看到,在登陆按钮的HTML源代码部分有3项隐藏的Input,观察name和value值,显然就是第一次请求POST的表单隐藏值。

获取3次请求的网址

第一次请求的网址为固定的,即’https://grs.zju.edu.cn/cas/login?locale=zhCN&service=http%3A%2F%2Fgrs.zju.edu.cn%2Fallogene%2Fpage%2Fhome.htm%3Flocale=zhCN';

按照上述分析构造表单,模拟POST请求,返回的’Response Headers’的Location即为第二次请求的网址;

同样的方式获取第三次请求的网址;

访问第3次请求的网址,即可实现登陆,返回登陆之后的HTML代码。

代码实现(Python2.7)

导入相关包

实现第一次请求

需要注意的是:在访问的过程中,因为涉及多次请求,一定要通过Session()的方式来保持网站的对话。

log_html为访问教务处网站主页返回的html文档,HTML文档的解析包挺多的,这里我们选用BeautifulSoup来解析返回文档,获取表单隐藏值。

获取验证码图片,进行验证码识别,验证码识别可以采用OCR方式或者机器学习的方法,这里我们简化一下,直接采用手动输入的方式。

构建好表单后,即可实现第一次请求:

* 需要注意保存每一次请求的cookies,以保持登陆状态。 *

第二次请求

第三次请求

至此,大功告成,成功登陆教务处网站。

下面就可以做一些有意思的事情了,比如利用flask封装一个API接口,进而做出课程表查询、考试提醒、成绩查询等各种功能型应用。

详细代码及说明可访问我的GitHub:https://github.com/Ruanshubin

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值