南岸 发表于 2020-9-20 22:13

利用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()
```

南岸 发表于 2020-9-21 19:27

mpr521 发表于 2020-9-21 17:36
楼主很厉害啊,你说的我明白了,我们是教务管理系统,有师生或者师师之间互评,跟你学习学习,对这个目前还 ...

我这个是针对于学生和学生之间的互评

南岸 发表于 2020-9-20 23:18

mpr521 发表于 2020-9-20 22:58
是数据库里的评价吗?可以将个人账号登入后看到的数据库评价吗?我一般都用按键精灵,似乎有点儿LOW啊

不是的,是有个网站,在里面进行评价

mpr521 发表于 2020-9-20 22:58

是数据库里的评价吗?可以将个人账号登入后看到的数据库评价吗?我一般都用按键精灵,似乎有点儿LOW啊

Ldfd 发表于 2020-9-20 23:01

竟然还有验证码

正己 发表于 2020-9-20 23:08

好家伙,这个有意思,学习了

QingYi. 发表于 2020-9-20 23:11

会Python是真的可以为所欲为

pwp 发表于 2020-9-20 23:14

{:1_921:}楼主是某大学大学老师

南岸 发表于 2020-9-20 23:18

Ldfd 发表于 2020-9-20 23:01
竟然还有验证码

登陆有验证码的,不过很好解决

梦蛟龙 发表于 2020-9-20 23:19

官网首页很难看啊

南岸 发表于 2020-9-20 23:19

QingYi. 发表于 2020-9-20 23:11
会Python是真的可以为所欲为

哈哈哈哈哈哈哈,人生苦短,我用python
页: [1] 2 3
查看完整版本: 利用python实现某大学德育评价批量处理