亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用Python開(kāi)發(fā)一個(gè)自動(dòng)答題程序

 更新時(shí)間:2023年02月03日 08:24:32   作者:魔王不會(huì)哭  
這篇文章主要為大家詳細(xì)介紹了如何利用Python開(kāi)發(fā)一個(gè)自動(dòng)答題程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下

環(huán)境使用

Python 3.8

–> 解釋器 <執(zhí)行python代碼>

Pycharm

–> 編輯器 <寫(xiě)python代碼的>

模塊使用

import requests —> 數(shù)據(jù)請(qǐng)求模塊 pip install requests

import re

from selenium import webdriver —> 自動(dòng)測(cè)試模塊 pip install selenium==3.141.0 <指定版本安裝>

默認(rèn)安裝 selenium 安裝 4.0 和 3.0 語(yǔ)法上面有區(qū)別, 但是方法一樣

自動(dòng)答題思路步驟

一. 獲取題目答案 <完成>

答案頁(yè)面 --> 是有答案內(nèi)容的

找到所有答案頁(yè)面ID, 就可以獲取所有題目答案內(nèi)容了 --> 分析答案頁(yè)面ID在哪里可以獲取

1.通過(guò)開(kāi)發(fā)者工具進(jìn)行抓包分析

  • 打開(kāi)開(kāi)發(fā)者工具: F12 或者 鼠標(biāo)右鍵點(diǎn)擊檢查選擇network
  • 刷新網(wǎng)頁(yè): 讓文本網(wǎng)頁(yè)的數(shù)據(jù)內(nèi)容重新加載一遍
  • 關(guān)鍵字搜索: 通過(guò)搜索 答案ID, 去查詢對(duì)應(yīng)數(shù)據(jù)包

2.通過(guò)代碼, 然后獲取答案內(nèi)容:

代碼基本四大步驟: 發(fā)送請(qǐng)求 --> 獲取數(shù)據(jù) --> 解析數(shù)據(jù) --> 保存數(shù)據(jù)

a.發(fā)送請(qǐng)求, 模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求

請(qǐng)求地址: 答案頁(yè)面url

b.獲取數(shù)據(jù), 獲取頁(yè)面網(wǎng)頁(yè)源代碼

c.解析數(shù)據(jù), 提取我們想要的數(shù)據(jù)內(nèi)容

答案選項(xiàng)

二. 把題目答案和選項(xiàng)進(jìn)行比較, 自動(dòng)選擇正確答案

模擬人的行為去答題:

  • 打開(kāi)瀏覽器
  • 輸入答題網(wǎng)址

因?yàn)橛?700多題目, 重復(fù)操作

  • 選擇正確選項(xiàng)
  • 點(diǎn)擊下一題

代碼展示

# 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊 --> 第三方模塊, 需要安裝 pip install requests
import requests
# 導(dǎo)入正則模塊 --> 內(nèi)置模塊, 不需要安裝
import re
# 導(dǎo)入自動(dòng)化模塊 --> 第三方模塊, 需要安裝 pip install selenium==3.141.0 <指定版本安裝>
from selenium import webdriver

"""
1. 打開(kāi)瀏覽器
    配置瀏覽器驅(qū)動(dòng):
        大版本一樣, 小版本最相近即可
"""
driver = webdriver.Chrome(r'D:\download\anaconda\chromedriver.exe')
# 2. 訪問(wèn)網(wǎng)站
driver.get('https://www.jsyks.com/kms-sxlx')
# 設(shè)置全屏
driver.maximize_window()
# 讀取答案文本內(nèi)容, 獲取答案ID <讀取數(shù)據(jù)>
f = open('答案ID.txt', encoding='utf-8')
# 字符串分割方法: split() --> 字符串?dāng)?shù)據(jù)變成列表
answer_id_list = f.read().split(',')
# for循環(huán)遍歷, 把列表里面元素一個(gè)一個(gè)提取出來(lái)
for answer_id in answer_id_list:
    """
    1. 發(fā)送請(qǐng)求, 模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求
        請(qǐng)求地址: 答案頁(yè)面url
        - 安裝模塊:
            I. 點(diǎn)擊pycharm終端 輸入命令 pip install requests
            II. win + R 輸入cmd 輸入命令 pip install requests
        - 模擬瀏覽器發(fā)送請(qǐng)求
            好處: 防止被反爬
            headers 請(qǐng)求頭 --> 可以復(fù)制
        - <Response [200]> 表示響應(yīng)對(duì)象
            Response: 中文意思響應(yīng)/回復(fù)/回答
            <>: 表示對(duì)象
            200: 狀態(tài)碼 表示請(qǐng)求成功 --> 相當(dāng)于你打電話, 打通了有嘟嘟嘟聲音
            404: 鏈接不對(duì) --> 相當(dāng)于你打電話, 你所撥打的電話是空號(hào)

    打亂了 --> 題目 + 答案內(nèi)容 都保存下來(lái), 然后進(jìn)行對(duì)比
    """
    # 構(gòu)建答案頁(yè)面url --> f'{}' 字符串格式化方法 --> format
    answer_url = f'https://tiba.jsyks.com/Post/{answer_id}.htm'
    # 偽裝模擬
    headers = {
        # User-Agent 表示瀏覽器基本身份標(biāo)識(shí)
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 發(fā)送請(qǐng)求
    response = requests.get(url=answer_url, headers=headers)
    """
    2. 獲取數(shù)據(jù), 獲取頁(yè)面網(wǎng)頁(yè)源代碼
    3. 解析數(shù)據(jù), 提取我們想要答案內(nèi)容
        正則表達(dá)式: 會(huì) 1 不會(huì) 0
        re.findall('匹配的數(shù)據(jù)', '什么地方匹配') --> re模塊里面findall方法: 找到所有我們想要的數(shù)據(jù)內(nèi)容

        (.*?) --> ()精確匹配 .匹配任意字符(除了\n換行符) *匹配前一個(gè)字符0或者N個(gè) ? 非貪婪匹配模式

    網(wǎng)站不同, 數(shù)據(jù)結(jié)構(gòu)不同 --> 基本上一個(gè)代碼對(duì)一個(gè)網(wǎng)站
    """
    answer = re.findall('答案是:(.*?)。', response.text)[0]
    print(answer)
    if answer == '對(duì)':
        answer = 'Y'
    elif answer == '錯(cuò)':
        answer = 'N'
    """
    選擇正確答案進(jìn)行點(diǎn)擊操作:
        先定位元素, 然后再進(jìn)行操作
    find_element_by_css_selector --> 通過(guò)css選擇器查找元素

    len() 統(tǒng)計(jì)元素個(gè)數(shù)
        answer --> A 元素只有一個(gè)  <單選題>
        answer --> ABD 元素三個(gè)  <多選題>
    """
    if len(answer) == 1:
        driver.find_element_by_css_selector(f'#btn{answer}').click()
        # 點(diǎn)擊下一題
        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()
        # 點(diǎn)擊確定選好了的按鈕
        driver.find_element_by_css_selector('#ExamOptDa input').click()
        # 點(diǎn)擊下一題
        driver.find_element_by_css_selector('#btn_PN span').click()

到此這篇關(guān)于利用Python開(kāi)發(fā)一個(gè)自動(dòng)答題程序的文章就介紹到這了,更多相關(guān)Python自動(dòng)答題程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 安裝第三方庫(kù) pip install 安裝慢安裝不上的解決辦法

    Python 安裝第三方庫(kù) pip install 安裝慢安裝不上的解決辦法

    很多朋友反映在使用pip install安裝python 第三方庫(kù)的過(guò)程中會(huì)出現(xiàn)網(wǎng)速很慢,或者是安裝下載到中途,停止,卡主,或者是下載報(bào)錯(cuò)等問(wèn)題,下面小編給大家?guī)?lái)了解決方法,一起看看吧
    2019-06-06
  • pytest?fixtures函數(shù)及測(cè)試函數(shù)的參數(shù)化解讀

    pytest?fixtures函數(shù)及測(cè)試函數(shù)的參數(shù)化解讀

    這篇文章主要介紹了pytest?fixtures函數(shù)及測(cè)試函數(shù)的參數(shù)化解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 對(duì)python條件表達(dá)式的四種實(shí)現(xiàn)方法小結(jié)

    對(duì)python條件表達(dá)式的四種實(shí)現(xiàn)方法小結(jié)

    今天小編就為大家分享一篇對(duì)python條件表達(dá)式的四種實(shí)現(xiàn)方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 使用python實(shí)現(xiàn)畫(huà)AR模型時(shí)序圖

    使用python實(shí)現(xiàn)畫(huà)AR模型時(shí)序圖

    今天小編就為大家分享一篇使用python實(shí)現(xiàn)畫(huà)AR模型時(shí)序圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python實(shí)現(xiàn)快速提取PDF文檔中的圖片

    Python實(shí)現(xiàn)快速提取PDF文檔中的圖片

    提取PDF文檔中的圖片是一項(xiàng)常見(jiàn)的任務(wù),本文將介紹如何使用PyPDF2和pdfminer.six這兩個(gè)庫(kù)來(lái)提取PDF文檔中的圖片,感興趣的可以了解一下
    2023-06-06
  • python with (as)語(yǔ)句實(shí)例詳解

    python with (as)語(yǔ)句實(shí)例詳解

    這篇文章主要介紹了python with (as)語(yǔ)句實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 使用python請(qǐng)求接口方式(可進(jìn)行并發(fā)測(cè)試)

    使用python請(qǐng)求接口方式(可進(jìn)行并發(fā)測(cè)試)

    這篇文章主要介紹了使用python請(qǐng)求接口方式(可進(jìn)行并發(fā)測(cè)試),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python3打包exe代碼2種方法實(shí)例解析

    Python3打包exe代碼2種方法實(shí)例解析

    這篇文章主要介紹了Python3打包exe代碼2種方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python應(yīng)用打包成APK的全部流程記錄

    Python應(yīng)用打包成APK的全部流程記錄

    這篇文章主要介紹了Python應(yīng)用打包成APK的全部流程,遵循正確的步驟,可以輕松地將Python應(yīng)用轉(zhuǎn)換為在Android設(shè)備上運(yùn)行的APK文件,從而擴(kuò)展應(yīng)用的可用平臺(tái),需要的朋友可以參考下
    2024-09-09
  • Python如何查找特定名稱文件

    Python如何查找特定名稱文件

    這篇文章主要介紹了Python如何查找特定名稱文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論