zoukankan      html  css  js  c++  java
  • 南通大学自动评教脚本(python)

           临近期末我等学沫都在紧张的进行着复习(预习),本来时间就不多,居然还让我们去评教万一因为这点时间我们挂科了咋办,于是乎用半生不熟的python写个自动评教的脚本。

    一,具体分析:

    我们先来评一个抓包来看

    1.可以看出

    请求方法:POST

    地址 : /cjcx/actions/SubmitEvaluationTeaching.aspx

    参数 :

    cjid:是课程编号

    cpjg: 是评级 

    advice: 是建议

    2.来找获得cjid的请求

    可以看出

    请求方法:post(经测试,get同样有效)

    地址:/cjcx/Data/EvaluationCourseData.aspx

    没有参数

    二,具体流程

    1.模拟登陆(之前的文章写过了这里

    2.请求cjid,用正则表达式来找出cjid

    3.遍历cjid,构造求参数,向提交地址提交

    4.处理请求的返回,判断评教成功与否


    三,效果




    四,完整代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import urllib2
    import urllib
    import cookielib
    import re
    
    cj=cookielib.CookieJar()
    headler=urllib2.HTTPCookieProcessor(cj)
    opener=urllib2.build_opener(headler)
    url="http://jwgl.ntu.edu.cn/cjcx/Default.aspx"		#登录页面
    url1="http://jwgl.ntu.edu.cn/cjcx/checkImage.aspx"	#验证码页面
    scoreurl="http://jwgl.ntu.edu.cn/cjcx/Data/ScoreAllData.aspx"#获取分数
    cjidurl="http://jwgl.ntu.edu.cn/cjcx/Data/EvaluationCourseData.aspx"
    tijiaourl="http://jwgl.ntu.edu.cn/cjcx/actions/SubmitEvaluationTeaching.aspx"
    
    def  login():
    	#输入数据
    	print u"××××××××××××××××××××南通大学教务系统登陆××××××××××××××××××××"
    	print u"输入学号!"
    	xh=raw_input()
    	print u"输入身份证号!"
    	sfzh=raw_input()
    	print u"密码!"
    	kl=raw_input()
    	yzm=opener.open(url1)
    	yzmgif=open("yzm.gif","w")
    	yzmgif.write(yzm.read())
    	yzmgif.close()
    	print u"验证码已保存在本文件目录下(yzm.gif),请查看并输入!"
    	yzmstr=raw_input()
    	#数据保存
    	jilu=open(xh+".txt","w")
    	jilu.write("学号:"+xh+"
    身份证号:"+sfzh+"
    密码:"+kl)
    	jilu.close()
    	values={"__VIEWSTATE":"/wEPDwUJODExMDE5NzY5ZGRgtUdRucUbXsT8g55XmVsTwV6PMw==",
    		"__VIEWSTATEGENERATOR":"6C0FF253",
    		"xh":xh,
    		"sfzh":sfzh,
    		"kl":kl,
    		"yzm":yzmstr}
    	scoreValues={"start":"0",
    			"pageSize":"80"}
    	#login
    	request=urllib2.Request(url,urllib.urlencode(values))
    	f=opener.open(request)
    def pingjiao():
    	#get cjid  
    	cjidRequest=urllib2.Request(cjidurl)
    	cjid=opener.open(cjidRequest)
    	cjidstr=cjid.read()
    	print cjidstr
    	restr='"cjid":"(.*?)"(.*?)"kcmc":"(.*?)"'
    	restr1='true'
    	pattern=re.compile(restr)
    	pattern1=re.compile(restr1)
    	items=re.findall(pattern,cjidstr)
    	for item in items:
    		#print item[0],item[2]
    		print 'subject:'+item[2]+'  is doing... '
    		pjcsValues={"cjid":item[0],"cpjg":"111111111","advice":""}
    		resultR=urllib2.Request(tijiaourl,urllib.urlencode(pjcsValues))
    		result=opener.open(resultR)
    		resultstr=result.read()
    		#print resultstr
    		restr=re.findall(pattern1,resultstr)
    		#print resultstr
    		if restr!=[] and restr[0]=='true':
    			print 'success'
    		else:
    			print 'failed'
    login()
    pingjiao()
    



  • 相关阅读:
    su命令Permission denied
    Linux网络故障
    nsswitch
    route命令
    GCC编译器原理(三)------编译原理三:编译过程(3)---编译之汇编以及静态链接【1】
    GCC编译器原理(三)------编译原理三:编译过程(2-2)---编译之语法分析
    GCC编译器原理(三)------编译原理三:编译过程(2-1)---编译之词法分析
    GCC编译器原理(三)------编译原理三:编译过程---预处理
    GCC编译器原理(二)------编译原理一:ELF文件(3)
    GCC编译器原理(二)------编译原理一:ELF文件(2)
  • 原文地址:https://www.cnblogs.com/A-yes/p/9894217.html
Copyright © 2011-2022 走看看