最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python開發(fā)一個自動答題程序

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

環(huán)境使用

Python 3.8

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

Pycharm

–> 編輯器 <寫python代碼的>

模塊使用

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

import re

from selenium import webdriver —> 自動測試模塊 pip install selenium==3.141.0 <指定版本安裝>

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

自動答題思路步驟

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

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

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

1.通過開發(fā)者工具進行抓包分析

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

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

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

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

請求地址: 答案頁面url

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

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

答案選項

二. 把題目答案和選項進行比較, 自動選擇正確答案

模擬人的行為去答題:

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

因為有1700多題目, 重復操作

  • 選擇正確選項
  • 點擊下一題

代碼展示

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

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

    打亂了 --> 題目 + 答案內(nèi)容 都保存下來, 然后進行對比
    """
    # 構建答案頁面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'
    }
    # 發(fā)送請求
    response = requests.get(url=answer_url, headers=headers)
    """
    2. 獲取數(shù)據(jù), 獲取頁面網(wǎng)頁源代碼
    3. 解析數(shù)據(jù), 提取我們想要答案內(nèi)容
        正則表達式: 會 1 不會 0
        re.findall('匹配的數(shù)據(jù)', '什么地方匹配') --> re模塊里面findall方法: 找到所有我們想要的數(shù)據(jù)內(nèi)容

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

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

    len() 統(tǒng)計元素個數(shù)
        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開發(fā)一個自動答題程序的文章就介紹到這了,更多相關Python自動答題程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pycharm配置SSH遠程連接服務器詳細步驟(0基礎詳細版)

    pycharm配置SSH遠程連接服務器詳細步驟(0基礎詳細版)

    PyCharm是一款流行的Python集成開發(fā)環(huán)境(IDE),提供了遠程連接云服務器的功能,使得開發(fā)者可以更加便捷地進行遠程開發(fā)和調(diào)試,這篇文章主要給大家介紹了關于pycharm配置SSH遠程連接服務器的詳細步驟,需要的朋友可以參考下
    2024-07-07
  • Python數(shù)據(jù)類型之Number數(shù)字操作實例詳解

    Python數(shù)據(jù)類型之Number數(shù)字操作實例詳解

    這篇文章主要介紹了Python數(shù)據(jù)類型之Number數(shù)字操作,結合實例形式詳細分析了Python數(shù)字類型的概念、功能、分類及常用數(shù)學函數(shù)相關使用技巧,需要的朋友可以參考下
    2019-05-05
  • 使用Django連接Mysql數(shù)據(jù)庫步驟

    使用Django連接Mysql數(shù)據(jù)庫步驟

    今天小編就為大家分享一篇關于使用Django連接Mysql數(shù)據(jù)庫步驟,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 一文帶你了解python中的多態(tài)性

    一文帶你了解python中的多態(tài)性

    多態(tài)性是 OOP 的一個特征,這意味著一個名稱可以具有不同的功能, 這篇文章主要為大家詳細介紹了如何在 Python 中實現(xiàn)多態(tài)性,感興趣的小伙伴可以學習一下
    2023-11-11
  • 關于Python兩個列表進行全組合操作的三種方式

    關于Python兩個列表進行全組合操作的三種方式

    這篇文章主要介紹了關于Python兩個列表進行全組合操作的三種方式,兩個元組 (a, b)(c, d),則它們的組合有 a,c a,d b,c b,d,這就叫全組合,需要的朋友可以參考下
    2023-04-04
  • python利用裝飾器進行運算的實例分析

    python利用裝飾器進行運算的實例分析

    本文主要是通過使用Python的裝飾器來做一個運算的實例,來給大家詳細介紹下Python的裝飾器,非常的實用,有需要的小伙伴可以參考下。
    2015-08-08
  • 基于Python+Turtle實現(xiàn)繪制簡易的大風車

    基于Python+Turtle實現(xiàn)繪制簡易的大風車

    大風車,吱呀吱呦呦地轉,這里的風景呀真好看!天好看,地好看……一首熟悉的歌曲,是否已經(jīng)把你拉回了童年?本文將用Turtle庫繪制簡易的大風車,需要的可以參考一下
    2022-06-06
  • 基于fastapi框架的異步解讀

    基于fastapi框架的異步解讀

    這篇文章主要介紹了基于fastapi框架的異步解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • python集合類型用法分析

    python集合類型用法分析

    這篇文章主要介紹了python集合類型用法,實例分析了Python中集合的功能及常見使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • python簡單線程和協(xié)程學習心得(分享)

    python簡單線程和協(xié)程學習心得(分享)

    下面小編就為大家?guī)硪黄猵ython簡單線程和協(xié)程學習心得(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

五莲县| 莲花县| 鄯善县| 吉林市| 蒲城县| 双桥区| 金坛市| 宝鸡市| 樟树市| 保靖县| 临高县| 简阳市| 金秀| 靖边县| 库车县| 古浪县| 乡城县| 甘谷县| 雅江县| 远安县| 内黄县| 崇左市| 渝北区| 漳平市| 枣庄市| 延庆县| 灵武市| 松阳县| 蛟河市| 桂林市| 汝城县| 宜兰市| 红安县| 宽甸| 三河市| 平凉市| 全南县| 仁布县| 昌图县| 阳新县| 马山县|