本人是太原理工大学的一名学生,我们学校的教务系统使用的是URP教务管理系统。该系统是一款JSP系统,其中还使用iframe标签。我们学校特别添加了验证码校验。😓😓

本文介绍使用python2模拟登录教务处,获取成绩单界面内容。为成功登录,使用了cookielib。CookieJar类的对象可以捕获cookie并在后续连接请求时重新发送,这样就可以实现我们所需要的模拟登录功能。
成绩单界面内容未做处理,等待下一版本更新,更新内容为将成绩单写入excle中。

#coding=UTF-8
import urllib
import urllib2
import cookielib
#获取Cookiejar对象(存在本机的cookie消息)
cookie=cookielib.CookieJar()
#自定义opener,并将opener跟CookieJar对象绑定
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#安装opener,此后调用urlopen()时都会使用安装过的opener对象
urllib2.install_opener(opener)
dalidateCodeUrl="http://202.207.247.49/validateCodeAction.do"
loginUrl="http://202.207.247.49/loginAction.do"
CJurl="http://202.207.247.49/gradeLnAllAction.do"
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.6',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': '202.207.247.49',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36'
}
def downValidateCode(): #下载验证码函数
req = urllib2.urlopen(dalidateCodeUrl)
content = req.read()
f=open('./validate/'+'validate'+'.jpg','w+') #需要在该目录下建立validate文件夹用来存放验证码图片
f.write(content)
print '验证码下载完成'
print "请输入学号"
xh=raw_input()
print "请输入密码"
mm=raw_input()
downValidateCode()
print "请输入验证码"
validate=raw_input()
datas = {
'zjh':xh,
'mm':mm,
'v_yzm': validate
}
try:
post_data=urllib.urlencode(datas)
req=urllib2.Request(loginUrl,headers=headers,data=post_data)
response = urllib2.urlopen(req)
reqCJ=urllib2.Request(CJurl)
responseCj=urllib2.urlopen(reqCJ)
print responseCj.read().decode('GBK')
except urllib2.HTTPError, e:
print e.getcode()
print e.reason