长江雨课堂考试半自动答题python脚本

文章目录

  • 前言
  • 一、试卷提取
    • 直接开始,F12审查元素,发现所有的题目和答案全是图片形式
    • 继续观察发现slide_3_8是第2题,slide_4_8是第3题,以此类推,于是直接写个循环拿到所有题目
  • 二、自动答题
    • 把刚才的刚才拿到的题目放到当前文件夹下,注意哦:是转换过后的txt格式的那个
    • 正题开始
  • 效果还好吧,最后还是要一个个手动打钩
  • 总结:


前言

老师居然用这什么长江雨课堂,闲的没事就研究一下能不能写个脚本替我把答案跑出来,于是乎就有了这篇文章


一、试卷提取

直接开始,F12审查元素,发现所有的题目和答案全是图片形式

长江雨课堂考试半自动答题python脚本_第1张图片

继续观察发现slide_3_8是第2题,slide_4_8是第3题,以此类推,于是直接写个循环拿到所有题目

长江雨课堂考试半自动答题python脚本_第2张图片
长江雨课堂考试半自动答题python脚本_第3张图片

import requests
import os
if not os.path.exists('./picture'): # 判断当前目录下是否有picture这个目录,没有就建一个,有了就算了
    os.makedirs('./picture')
# 请求头,其实可以不带的
head = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
}
for i in range(2,37):  # 循环拿下所有题目,并保存
    url = f'https://changjiang-public-qn.yuketang.cn/public/32233404/slide_{i}_8_20230331081800.png'
    name = f"第{i-1}题" + ".jpg"
    img_data = requests.get(url, headers=head).content
    img_ptah = 'E:\\pychaem\\python\\00一些有趣的东西\\picture\\' + name
    with open(img_ptah, 'wb') as f:
        f.write(img_data)
        print(f"第{i-1}题OK")
# 全部保存之后用第三方图片识别转成txt格式,并放到当前目录
# 在线图片转文字,免费且方便,支持一键合并,挺好用的 https://web.baimiaoapp.com/

二、自动答题

把刚才的刚才拿到的题目放到当前文件夹下,注意哦:是转换过后的txt格式的那个

长江雨课堂考试半自动答题python脚本_第4张图片

正题开始

import requests
import time
head = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
    "Content-Type": "application/json; charset=utf-8",
}
with open('E:\\pychaem\\python\\00一些有趣的东西\\第2题.txt', 'r', encoding='utf-8') as f:
    topics = f.readlines()  # 读取题目,这里是所有题目放一个列表里
    try:
        for topic in topics:  # 逐行读取
            print(topic, end='')  #  把题目打印到屏幕上
            url = f"https://study.jszkk.com/api/open/seek?q={topic}"  # 搜题
            response = requests.get(url, headers=head)  # 请求
            if response.json()['data'] == []:  #  有些题目可能会找不到答案
                print("找不到答案哎!!!ε=(´ο`*)))")
            else:
                # print(response.json()['data']['content'])
                print(response.json()['data']['answer'])  # 打印答案
            time.sleep(0.3)  # 防止请求太快被封ip,习惯性延迟
    except Exception as e:  # 输出异常
        print("Error:",e )

效果还好吧,最后还是要一个个手动打钩

长江雨课堂考试半自动答题python脚本_第5张图片

总结:

代码有些许潦草,中间有好多可以改进的地方,懒得搞了,主要是想试下自己的动手能力,目的已达到O(∩_∩)O哈哈~

你可能感兴趣的:(python,python,开发语言)