python带你制作可以随机的自答题程序

这篇具有很好参考价值的文章主要介绍了python带你制作可以随机的自答题程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python带你制作可以随机的自答题程序

环境使用:

  • 解释器版本 >>> python 3.8

  • 代码编辑器 >>> pycharm 2021.2

模块使用:

  • import requests

    —> 数据请求 / 第三方模块 / 需要安装

  • import re

    —> 正则表达式来匹配处理字符串 / 内置模块 / 无需安装

  • from selenium import webdriver

    —> 自动测试模块 pip install selenium==3.141.0 <指定版本安装>

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

python带你制作可以随机的自答题程序

可找我获取的:

  1. 驱动安装教程

  2. 素材: 答案ID文本获取

程序实现思路: <模板> 获取题库

一. 获取题库 --> 问题+答案

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

  1. 明确需求:

    • 明确采集的网站是什么

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

    • 明确采集的数据是什么

      1. 问题

      2. 答案

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

    已知: 问题/答案 数据来自于 --> 答案页面 第一题: https:///Post/2c15b.htm

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

    第一题: https:///Post/2c15b.htm

    第二题: https:///Post/8ac1a.htm

    第三题: https:///Post/e97d7.htm

    2c15b / 8ac1a / e97d7

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

二. 代码实现步骤

  1. 发送请求, 模拟浏览器对 答案页面url地址 发送请求

  2. 获取数据, 获取网页源代码

  3. 解析数据, 提取我们想要的数据内容

  4. 保存数据, 保存数据 <保存表格里面即可>

python带你制作可以随机的自答题程序

二. 进行自动答题操作

模拟人的行为, 进行答题操作

  1. 打开浏览器

  2. 访问网址 <答题网址>

循环操作:

  1. 浏览题目, 选择正确答案, 点击下一题

    和题库的内容进行对比, 获取答案, 选择选项

  2. 继续答题, 继续点下一题

python带你制作可以随机的自答题程序

代码展示

python资料、源码、教程: 点击此处跳转文末名片获取

题库采集

导入模块

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://***/Post/{AnswerID}.htm'
    源码、教程、解答+VX:qian97378
    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()
自动答题

导入模块

from selenium import webdriver
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))

打开浏览器

Chrome 浏览器 谷歌

driver = webdriver.Chrome()

访问网站

driver.get('https://www.jsyks.com/kms-fzks')
driver.maximize_window()

答题操作:

题库 <获取出来了>

读取csv文件, 把题目内容以及答案读取出来

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':
        源码、教程、解答+VX:qian97378
            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()

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

python带你制作可以随机的自答题程序文章来源地址https://www.toymoban.com/news/detail-417124.html

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

到了这里,关于python带你制作可以随机的自答题程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python 程序设计入门(023)—— Python 的自定义函数

    在 Python 中,函数的应用非常广泛。比如:input()、print()、str()、range()、len() 等,这些称为 Python 的内置函数,可以直接使用。Python 支持自定义函数,即将一段有规律的、可重复使用的代码定义为函数,达到一次编写,多次使用的目的。 自定义函数使用 def 实现,语法格

    2024年02月12日
    浏览(11)
  • 绝地求生可以这样制作 (Python 版)

    绝地求生可以这样制作 (Python 版)

    总的来说,这种方式是通过图像识别来完成的,不侵入游戏,不读取内存,安全不被检测。 游戏中有各种不同的枪械,不同的枪械后坐力不一样,射速也不同。相同的枪械,装上不同的配件后,后坐力也会发生变化。 枪械的y轴上移是固定的,x轴是随机的,因此我们程序只移

    2024年02月07日
    浏览(11)
  • 带你用Python制作超级经典的2048游戏(文末赠书)

    名字:阿玥的小东东 学习:Python、C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 2048游戏Python实现 本期赠书 2048游戏是一款非常流行的益智游戏,玩家需要通过合并数字方块来获得更高的分数。本文将介绍如何使用Python语

    2024年02月11日
    浏览(11)
  • android-使用PopupWindow实现随机排列的自定义密码键盘

    android-使用PopupWindow实现随机排列的自定义密码键盘

    break; } else { b2 = true; } } if (b2) { data[i] = x; b = false; break; } } } return data; } keyboard_bg_big.xml ?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"? item android:state_pressed=“true” android:drawable=“@drawable/key11”/ item android:state_focused=“true” android:drawable=“@drawable/key12”/ item android:state_focused=“false” android:state_p

    2024年04月27日
    浏览(12)
  • 带你用Python制作一个经典必收藏的游戏:地铁跑酷(含完整代码)

    名字:阿玥的小东东 学习:Python、C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 一、游戏简介 二、游戏设计 引入必要的库

    2024年02月11日
    浏览(10)
  • 用Python带你制作小时候玩的“大富翁”(文末赠书)

    用Python带你制作小时候玩的“大富翁”(文末赠书)

    名字:阿玥的小东东 学习:Python、C/C++ 主页链接:阿玥的小东东的博客_CSDN博客-pythonc++高级知识,过年必备,C/C++知识讲解领域博主 目录 首先

    2024年02月15日
    浏览(11)
  • python编程实战(二):一文教你生成随机验证码!大小写字母与数字组合,位数可以控制

    python编程实战(二):一文教你生成随机验证码!大小写字母与数字组合,位数可以控制

    验证码验证,是常见的安全验证的一种方式,可以用来杜绝脚本和机器人操作等等; 除了本文介绍的简单的验证码之外,还有拼图验证、文字顺序验证等常见的验证方式 毕竟一位就是 26 + 26 +10 = 62种 4位验证码那就有 62 * 62 * 62 * 62 = 14776336 种组合! 6位就更不用说了~ 生活中我

    2023年04月11日
    浏览(7)
  • 用Python制作一个自动点击器,三种模块都可以

    顾名思义,Python中的自动点击器是一个简单的Python应用程序,可以按照用户的要求重复点击鼠标。不同的参数,如速度、频率和位置,可以根据用户的要求进行改变。 Python有不同的模块可用于控制键盘、鼠标等设备。因此,我们可以使用这些模块在Python中轻松创建一个自动点

    2024年02月12日
    浏览(6)
  • python 使用socket制作聊天室-(附带 源码 可以直接运行)

    python 使用socket制作聊天室-(附带 源码 可以直接运行)

    为什么socket能做聊天室呢 socket提供了通信的服务 比如你可以创建tcp udp的请求 向某个主机发起通信 就像是你想和某人说话 你得会发音 就是提供了服务端的方式和客户端的方式 服务端处理用户发起的请求 客户端发送数据和接收服务端的响应数据 就像你打开浏览器看视频 你

    2024年02月08日
    浏览(7)
  • YOLO 算法的自定义数据集制作及模型训练方法(附代码)

    YOLO 算法的自定义数据集制作及模型训练方法(附代码)

    本文章主要涉及以下工作:    (1)详细介绍了怎样制作YOLO的自定义数据集以及如何使用自定义数据集训练YOLO模型。    (2)对YOLOv5、YOLOv6、YOLOv7、YOLOv8进行了部分修改,能够适配自定义数据集进行训练。    (3)提供了各YOLO算法的目标检测模型的预训练权重。    (

    2024年02月13日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包