利用python进行哈工程教务系统中的绩点计算

作为学生党,计算每个学期的平均成绩是头等大事,但是多数教务系统并没有提供这项功能,东学西读网站虽然有一个在线的GPA计算器,但是最近也不能登录哈工程的教务获取成绩了,所以我就借助刚刚学习了一点的简单的爬虫,来完成这项任务。

首先,分析哈工程教务处成绩查询页面,与大多数教务系统页面相同,都是通过POST提交账号、密码等信息,不过哈工程有验证码,我们现在暂时不集成自动识别验证码的功能,于是整体思路就是认证cookie,然后获取验证码图片并显示,手工输入学号、密码、验证码,最后下载页面并分析html。

验证码的显示我利用了PIL库,需要额外进行下载安装,其余的库应该都是python自带的,使用了最原始的正则进行匹配,尤其是在匹配成绩时,由于成绩是一个表格,所以匹配略显复杂,主要思路就是先匹配出成绩表格的全部,然后逐行匹配,拿到所有成绩信息,最重要的信息无非就是学分和成绩了,这两个信息都出现在固定的位置,因此不难获得,另外学校存在考查课,考查课的成绩对应关系也已经集成在了一个字典当中,方便调用。

哈工程的教务成绩是按照学期计算的,在URL上没有显示,而是利用POST的方式做请求返回数据,因此当我们需要选择不同的学期时,还需要POST一个对应的学期代码,这个代码我已经集成在了一个字典的数据结构中。

代码如下:

#encoding=utf-8
import urllib2,cookielib,urllib
import cStringIO,string
import re
import Image

class Tool:
    #去除img标签,7位长空格
    removeImg = re.compile('<img.*?>| {7}| ')
    #删除超链接标签
    removeAddr = re.compile('<a.*?>|</a>')
    #把换行的标签换为\n
    replaceLine = re.compile('<tr>|<div>|</div>|</p>')
    #将表格制表<td>替换为\t
    r
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值