前言
之前搭建完Python的环境之后就一直没有时间真正静下来写一个完整的爬虫应用程序,这几天实习的日子开始填坑,Python爬虫最经典的也比较有意义的就是GPA计算器了,它模拟了登录捕获教务系统中成绩的过程,并且程序逻辑较为简单,实现起来较快。为了较好的体验和测试效果,我用PyQt写了小的界面。
目标
实现一个GPA计算器,输入用户名和密码,计算该学生的GPA并返回。
实现步骤
- 明确登录的过程,获取HTTP报文查看具体的字段。
- 接收用户的输入,输入用户名和密码进行模拟登录。
- 使用正则表达式匹配相应的字段进行过滤。
- 根据伟大的学校章程规定进行GPA计算并且返回。
- 完善彩蛋2333
本次实现采用Python的内置函数库进行实现。
核心设计
首先需要实现模拟登录,使用Chrome Developer Tools监视我们登录的情况,发现两点:第一点是实际上我们的用户名和密码是POST进行传输的(GET方式的参数会放在URL中,这样是灰常危险的),其次是我们POST参数的地址是pass.asp而不是我们看到的页面地址,这个页面是一个密码验证页面,它的BODY是空的,你看不到任何的内容。
然后我们需要进行模拟登录,为了保存登录信息,我们需要使用Cookie,这个过程的套路相对比较固定,为了尽量安全,我们构造Headers,整体