利用python实现某大学德育评价批量处理
本帖最后由 南岸 于 2020-9-20 22:15 编辑一个一个评价容易累死,所以今天就写了这个小工具
截图:
代码:
```
# -*- coding: utf-8 -*-
"""
@Time : 2020/9/20 11:32
@Auth : Ne-21
@DES : 德育评测批处理
@file :Hebust_dy.py
@IDE :PyCharm
@Motto:Another me.
"""
import requests
import time
import base64
import re
import html
class HebustDy(object):
def __init__(self):
self.stuNum = ''
self.pwd = ''
self.s = requests.Session()
self.header = {
'User-Agent': 'Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 84.0.4147.105 Safari / 537.36'
}
def get_13_timestamp(self):
timestamp1 = time.time()
return int(round(timestamp1) * 1000)
def get_vcode(self):
imgurl = 'http://202.206.64.85/morality/verifyCode?d='+str(self.get_13_timestamp())
web = self.s.get(imgurl, headers=self.header)
img = base64.b64encode(web.content)
imgdata = re.findall("b'(.*?)'", str(img))
img_data = base64.b64decode(imgdata)
with open("./img.png", "wb") as fb:
fb.write(img_data)
vcode = input("请输入验证码:")
return vcode
def login(self):
loginurl = 'http://202.206.64.85/morality/ajaxLogin'
data = {
'stuNum' : self.stuNum,
'pwd' : self.pwd,
'vcode' : self.get_vcode()
}
res = self.s.post(loginurl, headers=self.header, data=data)
logindata = (res.json()).get('data')
if logindata == True:
print("login success!")
pass
else:
print('login failure.')
self.stuNum = input("请输入账号:")
self.pwd = input('请输入密码:')
return self.login()
def get_student_list(self):
listurl = 'http://202.206.64.85/morality/index'
res = self.s.get(listurl, headers=self.header)
# print(res.text)
match = re.compile('<li class="mdui-list-item mdui-ripple" eid="(.*?)" status="0">')
eidlist = re.findall(match, res.text)
return eidlist
def main(self):
self.login()
for eid in self.get_student_list():
infourl = 'http://202.206.64.85/morality/evaluate?yid=2&id='+str(eid)
res = self.s.get(infourl, headers=self.header)
stuname = html.unescape(re.findall('<input type="hidden" name="evaluate\.stuname" value="(.*)" id="evaluate_stuname"/>', res.text))
ename = html.unescape(re.findall('<input type="hidden" name="evaluate\.ename" value="(.*?)" id="evaluate_ename"/>', res.text))
data = {
'evaluate.id': str(eid),
'evaluate.yid': 2,
'evaluate.stuname': stuname,
'evaluate.stuNum': (re.findall('<input type="hidden" name="evaluate\.stuNum" value="(.*?)" id="evaluate.stuNum"/>', res.text)),
'evaluate.stuId': (re.findall('<input type="hidden" name="evaluate\.stuId" value="(.*?)" id="evaluate_stuId"/>', res.text)),
'evaluate.status': 0,
'evaluate.estuId': (re.findall('<input type="hidden" name="evaluate\.estuId" value="(.*?)" id="evaluate_estuId"/>', res.text)),
'evaluate.ename':ename,
'evaluate.estuNum': (re.findall('<input type="hidden" name="evaluate\.estuNum" value="(.*?)" id="evaluate_estuNum"/>', res.text)),
'evaluate.createTime': "",
'yid': "2",
'evaluate.politics': '1',
'evaluate.study': '1',
'evaluate.moral': '1',
'evaluate.labor': '1',
'evaluate.legal': '1',
'evaluate.practice': '1'
}
posturl = 'http://202.206.64.85/morality/save?timestamp='+str(self.get_13_timestamp())
self.s.post(posturl, headers=self.header, data=data)
print('对象-->'+str(stuname)+',ID-->'+str(eid)+'---->完成评价!')
time.sleep(2)
print('已全部完成!')
if __name__ == '__main__':
run = HebustDy()
run.main()
``` mpr521 发表于 2020-9-21 17:36
楼主很厉害啊,你说的我明白了,我们是教务管理系统,有师生或者师师之间互评,跟你学习学习,对这个目前还 ...
我这个是针对于学生和学生之间的互评 mpr521 发表于 2020-9-20 22:58
是数据库里的评价吗?可以将个人账号登入后看到的数据库评价吗?我一般都用按键精灵,似乎有点儿LOW啊
不是的,是有个网站,在里面进行评价 是数据库里的评价吗?可以将个人账号登入后看到的数据库评价吗?我一般都用按键精灵,似乎有点儿LOW啊 竟然还有验证码 好家伙,这个有意思,学习了 会Python是真的可以为所欲为 {:1_921:}楼主是某大学大学老师 Ldfd 发表于 2020-9-20 23:01
竟然还有验证码
登陆有验证码的,不过很好解决 官网首页很难看啊 QingYi. 发表于 2020-9-20 23:11
会Python是真的可以为所欲为
哈哈哈哈哈哈哈,人生苦短,我用python