【准确率100%】用Python制作答题脚本,分分钟得满分

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

在一个平平常常的下午,一位好友向我发送了聊天申请

问:能帮她自动过一下科目四嘛,实在不想刷题了

那小姐姐的忙我能不帮嘛!!于是,我立马行动,帮她写出来这个代码

想着我也没啥用,毕竟老司机了~就作为福利来发给大家吧

祝看到这篇文章的人考驾照通通一把过呀~

目录

      • 前言
        • **更多精彩内容、资源皆可点击文章下方名片获取[此处跳转](#article_bottom)**
      • 环境使用:
      • 模块使用:
      • 本次网站
      • 代码展示
      • 尾语 💝

更多精彩内容、资源皆可点击文章下方名片获取此处跳转

环境使用:

  • 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 语法上面有区别, 但是方法一样

本文所有模块\环境\源码\教程皆可点击此处跳转免费领

本次网站

代码展示

导入模块

import requests
import re
from selenium import webdriver

1. 打开浏览器

配置浏览器驱动:

大版本一样, 小版本最相近即可

driver = webdriver.Chrome(r'D:\download\anaconda\chromedriver.exe')

2. 访问网站

driver.get('https://www.*****.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:

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

请求地址: 答案页面url

<Response [200]> 表示响应对象

Response: 中文意思响应/回复/回答

<>: 表示对象

200: 状态码 表示请求成功 –> 相当于你打电话, 打通了有嘟嘟嘟声音

404: 链接不对 –> 相当于你打电话, 你所拨打的电话是空号

构建答案页面url –> f’{}’ 字符串格式化方法 –> format

    answer_url = f'https://****.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)

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

5. 解析数据, 提取我们想要答案内容

re.findall(‘匹配的数据’, ‘什么地方匹配’)

–> re模块里面findall方法: 找到所有我们想要的数据内容

(.*?)

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

网站不同, 数据结构不同 –> 基本上一个代码对一个网站

    answer = re.findall('答案是:(.*?)。', response.text)[0]
    print(answer)
    源码、解答、教程加Q君羊:702813599 ###
    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()

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年6月26日
下一篇 2023年6月26日

相关推荐