我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python实现考试自动答题的脚本分享

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python实现考试自动答题的脚本分享

导语

对于新手而言,掌握好方向盘的打法非常重要,关系到我们能否顺利通过驾考,拿到驾照。而开车时方向盘又是最重要的,握好方向盘等于是给自己的安全上了保险。 

科目一考试为上机考试,100道题,题型为判断题和单选题,以案例、图片及动画形式的题目为主,考试时间45分钟,90分及以上过关。

最近这段时间天气正正好,不冷不热,是学习考驾照的好时机。想学的宝子,最好是现在这个季节,要知道,当年(咳咳咳...)也就是前年我学驾照的时候夏天晒的乌漆嘛黑的。

许多驾考学员们,虽说科二科三需要实体练车,但是科一科四都是理论知识点,那不得一次过。平常的话****我们可以利用碎片化的时间巩固基础知识, 争取科科一次过!今天小编教大家一个小脚本啦——Python实现自动答题 价值 1000元 外包订单项目案例。

一、准备环境

1)运行环境 

 开发环境:

Python3、Pycharm社区版。

import requests  ---> 数据请求模块 pip install requests  
import re
from selenium import webdriver ---> 自动测试模块 pip install selenium==3.141.0  <指定版本安装>。

谷歌浏览器 以及 谷歌驱动 <版本和浏览器版本相对应> 环境没有安装的同学, 可以去安装。

 2)模块安装

第三方库的安装方式如下: 

一般安装:pip install +模块名 

镜像源安装:pip install -i pypi.douban.com/simple/+模块名…

 (还有很多国内镜像源,这里是豆瓣的用习惯了,其他镜像源可以去看下之前文章都有的)

二、代码展示 

1)爬虫实现思路

一. 数据来源分析 --> 通过浏览器 开发者工具 抓包分析    

1. 明确需求:        - 明确采集的网站是什么            

题目答案页面: https://tiba.jsyks.com/Post/2c15b.htm

2.  分析这两个数据怎么获取    

数据来自于 --> 答案页面 

第一题: https://tiba.jsyks.com/Post/2c15b.htm    

问题: 获取1701道题目 --> 分析每个题目答案页面URL构成        

第一题: https://tiba.jsyks.com/Post/2c15b.htm        

第二题: https://tiba.jsyks.com/Post/8ac1a.htm       

 第三题: https://tiba.jsyks.com/Post/e97d7.htm    2c15b / 8ac1a / e97d7    

所以 只需要获取所有答案页面ID, 即可获取所有题库 。

2)自动答题主程序

# 导入自动化测试模块 --> 重点 3.141.0 版本
from selenium import webdriver
# 导入pandas
import pandas as pd
# 导入正则
import re

df = pd.read_csv('题库.csv')
key = []
value = []
# 获取每一道题目
for i in df['Problem']:  # 问题作为键
    # 把题目添加到列表里面
    key.append(i)
# 获取每一道题目答案
for j in df['Answer']: # 问题作为值
    # 把答案添加到列表里面
    value.append(j)

# 把两个列表合并成字典
dic = dict(zip(key, value))

"""
1. 打开浏览器
    Chrome 浏览器 谷歌
    webdriver.Chrome('驱动路径')
    I. 驱动选择
        根据你自己浏览器版本, 选择驱动版本, 最相近即可
        驱动只有32
    II. 驱动路径写法
        1. 不写路径
            - 驱动和你代码在一起
            - 驱动和你python安装目录在一起
        2. 写路径 绝对路径

"""
driver = webdriver.Chrome()
# 2. 访问网站
driver.get('https://www.jsyks.com/kms-fzks')
driver.maximize_window()

"""
答题操作:
    1. 题库 <获取出来了>
        读取csv文件, 把题目内容以及答案读取出来

1701道题,要读1701次啊?
    可以把问题作为字典键, 答案作为字典值
    根据问题, 可以获取答案

定位元素, 获取数据内容
"""

print(dic)
for page in range(50):
    Questions = driver.find_element_by_css_selector('#ExamTit').text
    # \d+ 匹配数字 获取题目
    Question = re.findall('\d+. (.*)', Questions)[0]
    answer = dic[Question]
    # 多选题, 答案肯定大于1
    if len(answer) == 1:
        # 判断答案内容 选择选项
        if answer == '对':
            # 定位对元素, 进行点击操作
            driver.find_element_by_css_selector('#TX1 #btnDa11').click()
        elif answer == '错':
            driver.find_element_by_css_selector('#TX1 #btnDa12').click()
        elif answer == 'A':
            driver.find_element_by_css_selector('#TX2 #btnDa21').click()
        elif answer == 'B':
            driver.find_element_by_css_selector('#TX2 #btnDa22').click()
        elif answer == 'C':
            driver.find_element_by_css_selector('#TX2 #btnDa23').click()
        elif answer == 'D':
            driver.find_element_by_css_selector('#TX2 #btnDa24').click()

        # 点击下一题
        driver.find_element_by_css_selector('#actArea #btnNext2').click()
    elif len(answer) > 1:
        # 多选
        for x in answer:
            if x == 'A':
                driver.find_element_by_css_selector('#TX2 #btnDa21').click()
            elif x == 'B':
                driver.find_element_by_css_selector('#TX2 #btnDa22').click()
            elif x == 'C':
                driver.find_element_by_css_selector('#TX2 #btnDa23').click()
            elif x == 'D':
                driver.find_element_by_css_selector('#TX2 #btnDa24').click()

        driver.find_element_by_css_selector('#actArea #btnNext2').click()


driver.find_element_by_css_selector('#actArea #btnNext3').click()
driver.find_element_by_css_selector('#Tip_Msg span input:nth-child(1)').click()

3)题库主程序

import requests
import re
import csv
import concurrent.futures
import parsel

def AnswerID():
    f = open('答案ID.txt', encoding='utf-8')
    answer_id_list = [answer_id for answer_id in f.read().split(',')]
    return answer_id_list


def GetResponse(html_url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    html_data = requests.get(url=html_url, headers=headers).text
    return html_data


def GetContent(AnswerID):
    AnswerUrl = f'https://tiba.jsyks.com/Post/{AnswerID}.htm'
    html_data = GetResponse(html_url=AnswerUrl)
    selector = parsel.Selector(html_data)
    problem = selector.css('#question a::text').get()
    answer = selector.css('#question h1 b::text').getall()
    if len(answer) == 0:
        answer = selector.css('#question h1 u::text').get()

    AnswerDict = {
        'Problem': problem,
        'Answer': answer,
    }
    return AnswerDict


def main(page):
    AnswerDict = GetContent(AnswerID=page)
    csv_writer.writerow(AnswerDict)
    print(AnswerDict)


if __name__ == '__main__':
    # GetContent(AnswerID='8502e')
    answer_id_list = AnswerID()
    f = open('科目四题库.csv', mode='a', encoding='utf-8', newline='')
    csv_writer = csv.DictWriter(f, fieldnames=['Problem', 'Answer'])
    csv_writer.writeheader()
    exe = concurrent.futures.ThreadPoolExecutor(max_workers=7)
    for answer_id in answer_id_list:
        exe.submit(main, answer_id)
    exe.shutdown()

三、效果展示

1)自动答题

​2)自动上交试卷

很多人问为什么只有96分没得100分?

因为题库下载的题目答案是错误的修正之后就可以啦!

以上就是Python实现考试自动答题的脚本分享的详细内容,更多关于Python考试自动答题的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python实现考试自动答题的脚本分享

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python实现考试自动答题的脚本分享

最近这段时间天气正正好,不冷不热,是学习考驾照的好时机。为了帮助大家能够顺利获得驾照,小编为大家准备了驾照考试的自动答题小程序,希望对大家有所帮助
2023-03-19

Python如何实现考试自动答题功能

这篇文章主要介绍“Python如何实现考试自动答题功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现考试自动答题功能”文章能帮助大家解决问题。一、准备环境1)运行环境 开发环境
2023-07-05

实例分享8个Python自动化脚本

本篇文章给大家带来了关于Python的相关知识,其中主要整理了自动化脚本的相关问题,包括了自动化阅读网页新闻、自动化数据探索、自动发送多封邮件等等内容,下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】每天你都可能会执行许多重复的任务,例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任务,非常方便。而在某种程度上,Pyt
2022-08-08

实现android自动化测试部署与运行Shell脚本分享

我的配置是linux 64, android4.2.2的sdk。 实现的细节都在代码注释里了,变量名以及echo的内容也是说明的一部分。 主流程为: 1.检测是否指定端口的模拟器已经运行,若有则关闭 2.创建模拟器 3.启动模拟器 4.用a
2022-06-04

shell脚本实现ssh自动登录功能分享

文件名:ssh_auto_login#!/usr/bin/expect### ssh模拟登陆器## @author zhiyuan ##if {$argc<4} { puts "Error
2022-06-04

Shell实现的Oracle启动脚本分享

Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是数据库名,多个名称之间用逗号分隔。缺省的操作是 restart ,也可以指定需要进行的操作( start | stop | restart
2022-06-04

Python自动化测试之登录脚本的实现

本文主要介绍了Python自动化测试之登录脚本的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-23

5个Python杀手级的自动化脚本分享

Python是一种功能强大的语言,广泛用于自动执行各种任务,只要想通过自动化日常任务来节省时间的人,Python 都能满足您的需求。本文整理了5个Python脚本,希望对大家有所帮助
2023-01-29

如何在在线答题中实现试卷的自动批改和自动评分

随着在线教育的发展,越来越多的教育机构选择将考试和测评的方式转移到在线平台上进行。在线答题平台不仅方便了学生的答题和查看成绩,也减轻了老师的工作负担。其中,自动批改和自动评分是在线答题平台的重要功能,可以大大提高试卷批改的效率和准确性。一、
2023-10-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录