利用Python开发一个自动答题程序

 更新时间:2023年02月03日 08:24:32   作者:魔王不会哭  
这篇文章主要为大家详细介绍了如何利用Python开发一个自动答题程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下

环境使用

Python 3.8

–> 解释器 <执行python代码>

Pycharm

–> 编辑器 <写python代码的>

模块使用

import requests —> 数据请求模块 pip install requests

import re

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

默认安装 selenium 安装 4.0 和 3.0 语法上面有区别, 但是方法一样

自动答题思路步骤

一. 获取题目答案 <完成>

答案页面 --> 是有答案内容的

找到所有答案页面ID, 就可以获取所有题目答案内容了 --> 分析答案页面ID在哪里可以获取

1.通过开发者工具进行抓包分析

  • 打开开发者工具: F12 或者 鼠标右键点击检查选择network
  • 刷新网页: 让文本网页的数据内容重新加载一遍
  • 关键字搜索: 通过搜索 答案ID, 去查询对应数据包

2.通过代码, 然后获取答案内容:

代码基本四大步骤: 发送请求 --> 获取数据 --> 解析数据 --> 保存数据

a.发送请求, 模拟浏览器对于url地址发送请求

请求地址: 答案页面url

b.获取数据, 获取页面网页源代码

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

答案选项

二. 把题目答案和选项进行比较, 自动选择正确答案

模拟人的行为去答题:

  • 打开浏览器
  • 输入答题网址

因为有1700多题目, 重复操作

  • 选择正确选项
  • 点击下一题

代码展示

# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入正则模块 --> 内置模块, 不需要安装
import re
# 导入自动化模块 --> 第三方模块, 需要安装 pip install selenium==3.141.0 <指定版本安装>
from selenium import webdriver

"""
1. 打开浏览器
    配置浏览器驱动:
        大版本一样, 小版本最相近即可
"""
driver = webdriver.Chrome(r'D:\download\anaconda\chromedriver.exe')
# 2. 访问网站
driver.get('https://www.jsyks.com/kms-sxlx')
# 设置全屏
driver.maximize_window()
# 读取答案文本内容, 获取答案ID <读取数据>
f = open('答案ID.txt', encoding='utf-8')
# 字符串分割方法: split() --> 字符串数据变成列表
answer_id_list = f.read().split(',')
# for循环遍历, 把列表里面元素一个一个提取出来
for answer_id in answer_id_list:
    """
    1. 发送请求, 模拟浏览器对于url地址发送请求
        请求地址: 答案页面url
        - 安装模块:
            I. 点击pycharm终端 输入命令 pip install requests
            II. win + R 输入cmd 输入命令 pip install requests
        - 模拟浏览器发送请求
            好处: 防止被反爬
            headers 请求头 --> 可以复制
        - <Response [200]> 表示响应对象
            Response: 中文意思响应/回复/回答
            <>: 表示对象
            200: 状态码 表示请求成功 --> 相当于你打电话, 打通了有嘟嘟嘟声音
            404: 链接不对 --> 相当于你打电话, 你所拨打的电话是空号

    打乱了 --> 题目 + 答案内容 都保存下来, 然后进行对比
    """
    # 构建答案页面url --> f'{}' 字符串格式化方法 --> format
    answer_url = f'https://tiba.jsyks.com/Post/{answer_id}.htm'
    # 伪装模拟
    headers = {
        # User-Agent 表示浏览器基本身份标识
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=answer_url, headers=headers)
    """
    2. 获取数据, 获取页面网页源代码
    3. 解析数据, 提取我们想要答案内容
        正则表达式: 会 1 不会 0
        re.findall('匹配的数据', '什么地方匹配') --> re模块里面findall方法: 找到所有我们想要的数据内容

        (.*?) --> ()精确匹配 .匹配任意字符(除了\n换行符) *匹配前一个字符0或者N个 ? 非贪婪匹配模式

    网站不同, 数据结构不同 --> 基本上一个代码对一个网站
    """
    answer = re.findall('答案是:(.*?)。', response.text)[0]
    print(answer)
    if answer == '对':
        answer = 'Y'
    elif answer == '错':
        answer = 'N'
    """
    选择正确答案进行点击操作:
        先定位元素, 然后再进行操作
    find_element_by_css_selector --> 通过css选择器查找元素

    len() 统计元素个数
        answer --> A 元素只有一个  <单选题>
        answer --> ABD 元素三个  <多选题>
    """
    if len(answer) == 1:
        driver.find_element_by_css_selector(f'#btn{answer}').click()
        # 点击下一题
        driver.find_element_by_css_selector('#btn_PN span').click()
    elif len(answer) > 1:
        # len(answer) --> 3 num -> 0 / 1 / 2
        for num in range(len(answer)):
            driver.find_element_by_css_selector(f'#btn{answer[num]}').click()
        # 点击确定选好了的按钮
        driver.find_element_by_css_selector('#ExamOptDa input').click()
        # 点击下一题
        driver.find_element_by_css_selector('#btn_PN span').click()

到此这篇关于利用Python开发一个自动答题程序的文章就介绍到这了,更多相关Python自动答题程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python3.6笔记之将程序运行结果输出到文件的方法

    Python3.6笔记之将程序运行结果输出到文件的方法

    下面小编就为大家分享一篇Python3.6笔记之将程序运行结果输出到文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python基于callable函数检测对象是否可被调用

    Python基于callable函数检测对象是否可被调用

    这篇文章主要介绍了Python基于callable函数检测对象是否可被调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python安全获取域管理员权限几种方式操作示例

    Python安全获取域管理员权限几种方式操作示例

    在不考虑直接攻击域控的情况下,如何快速获取域管理员权限呢?本文分享几种常见的获取域管理员权限的方式,有需要的朋友可以借鉴参考下
    2021-10-10
  • 使用Python进行IPO分析的基本步骤和工具

    使用Python进行IPO分析的基本步骤和工具

    在软件开发过程中,IPO(Input-Process-Output)分析是一种常用的方法,用于分析软件系统的输入、处理和输出,Python作为一种功能强大的编程语言,提供了许多工具和库来实现IPO分析,本文将介绍如何使用Python进行IPO分析的基本步骤和常用工具,需要的朋友可以参考下
    2023-12-12
  • Python Concurrent Futures解锁并行化编程的魔法示例

    Python Concurrent Futures解锁并行化编程的魔法示例

    Python的concurrent.futures模块为并行化编程提供了强大的工具,使得开发者能够轻松地利用多核心和异步执行的能力,本文将深入探讨concurrent.futures的各个方面,从基础概念到高级用法,为读者提供全面的了解和实用的示例代码
    2023-12-12
  • 浅谈Python3 numpy.ptp()最大值与最小值的差

    浅谈Python3 numpy.ptp()最大值与最小值的差

    今天小编就为大家分享一篇浅谈Python3 numpy.ptp()最大值与最小值的差,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 通过代码实例展示Python中列表生成式的用法

    通过代码实例展示Python中列表生成式的用法

    这篇文章主要介绍了通过代码实例展示Python中列表生成式的用法,包括找出质数、算平方数等基本用法,需要的朋友可以参考下
    2015-03-03
  • pytorch逻辑回归实现步骤详解

    pytorch逻辑回归实现步骤详解

    这篇文章主要为大家详细介绍了Pytorch实现逻辑回归分类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-10-10
  • python爬虫之教你如何爬取地理数据

    python爬虫之教你如何爬取地理数据

    这篇文章主要介绍了python爬虫之教你如何爬取地理数据,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

    pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

    这篇文章主要介绍了pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[],文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论