期末来啦~利用Python获取教务系统在校成绩
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。
前言
快到期末了,各种考试也接踵而至,考完后惴惴不安担心自己万一挂科就不好了,成绩一直不出来,又不想每次都登录查看,就可以用Python定时抓取数据,分析数据是否变化,然后发送短信。
Python版本:3.6
开始之前:
1、请自行安装BeautifulSoup 用于网页解析
2、请自行安装PrettyTable 用户格式化输出
3、请自行安装PIL 用于打卡图片。这也是日后想增加OCR识别的一个部分
主要思路:
1、总体:借助Python的http.cookiejar.CookieJar对象,使用urllib.request.build_opener来构建一个带有Cookie的opener,然后就使用这个opener来访问所有的页面,最后输出结果就好了。
2、验证码的获取与显示:因为我们是要让用户输入验证码,所以我们需要把获取到的图片以二进制流的方式写入文件。在利用PIL的open方法将图片文件读入,创建图片对象,最后用show方法调用系统的图片查看器显示图片。
3、_VIEWSTATE的获取:这个就要利用正则,把网页的html读取下来之后,利用以下正则表达式进行匹配
4、关于BeautifulSoup4的解析:我当时是这样进行分析的,我把网页读取出来之后,构造了一个BeautifulSoup对象
5、PrettyTable输出:说一点,输出时要使用str()这个BIF进行转换,不然有可能会报错
实现代码
源码中还使用Pickle,用二进制的方式存储用户数据,这样可以避免烦人的多次输入