填写教学评价

首页 | 最后更新时间: 2018-12-06 | 作者: AberSheeran | 捐助

我校操蛋的教学评价,需要进行三位数的键盘和鼠标交替操作,还必须要填。写了一个脚本,此篇以作记录。如有校友看到,亦可在我的Github上找到代码,直接使用。

瞟了一眼源码, 发现只有那几个老师的名字是a标签. 那么就简单了

def fuck_the_teaching_evaluation(session):
    """教学评价"""
    for each in re.findall(r"<a[\s\S]*?href='([\s\S]+?)'", (session.get_page("jxpj/xsjxpj.shtml"))):
        log.debug(f"处理{each}中...")
        _deal_teaching_evaluation_page(session, each)

接下来随便点击一个老师页面看看源码, jQ.ajaxForm... 看了一眼input, 有两个input特别猥琐的躲在上面并且还跟下面的格式格格不入, 令人不爽, 只好额外写了点re来捕获

def _deal_teaching_evaluation_page(session, page_url):
    """处理单个教学评价页面"""
    post_data = {}  # 将发送的信息
    page = session.get_page(page_url)
    # 这里不能改,教务系统写死的
    for hidden_input in re.findall(r'input.+?type="hidden".*?>', page):
        temproray = re.search(r'name="(?P<key>.*?)".*?value="(?P<value>.*?)"', hidden_input)
        post_data[temproray.group("key")] = temproray.group("value")
    # 打分部分,可以自行下调
    for key, max_num in re.findall(r'input name="(?P<name>.+?)".+?max="(?P<max>\d+)".+?class="number', page):
        post_data[key] = max_num
    # 评语部分,随便改
    post_data["PJXX"] = "上课生动有趣,深入浅出!"
    log.debug(post_data)
    message = session.post_data(
        "/jxpj/xsjxpj/saveinfo?action=ok",
        data=post_data,
    )
    try:
        assert message["success"] == "success", message["msg"]
    except AssertionError as e:
        log.error(e)

令人头大的是, 昨晚这玩意一直提醒我评语不能为空, 绞尽脑汁也没解决, 今早一起来直接就好了. 这教务系统也是很强

标签: Python
收录于#校园时光