知到刷課腳本全面解析

一、腳本簡介

知到刷課腳本是一款基於Python開發的自動刷知到課程的腳本。該腳本可以自動登錄知到網站,自動選擇需要學習的課程,並自動完成視頻觀看和答題,最終獲得學分。該腳本具有高度的自動化程度,能夠較大程度地提高知識學習效率。

二、環境配置

為了正常運行知到刷課腳本,需要在本地環境中進行相關配置。

1、安裝Python環境;

sudo apt install python3

2、安裝必要的Python庫,包括Selenium和Pillow。

sudo pip3 install selenium
sudo pip3 install Pillow

三、核心代碼

3.1 自動登錄

def login_knowbox(username, password, driver):
    url = "https://www.knowbox.cn/ssologin?v=4&return_url=https%3A%2F%2Fwww.knowbox.cn%2Fcourse%2Flearning-center%2F"
    driver.get(url)
    #獲取用戶名輸入框和密碼輸入框
    element_user = driver.find_element_by_name("userName")
    element_password = driver.find_element_by_name("password")
    #向用戶名、密碼輸入框分別輸入用戶名、密碼
    element_user.send_keys(username)
    element_password.send_keys(password)
    #點擊登錄按鈕
    driver.find_element_by_css_selector(".submit").click()
    #等待登錄成功
    WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.CLASS_NAME, "nav-list")))

3.2 自動選擇課程

def select_class(driver):
    # 點擊進入學習頁面
    driver.find_element_by_css_selector(".studyBtn").click()
    # 延時等待
    time.sleep(2)
    # 點擊所有課程
    driver.find_element_by_css_selector(".all-course").click()
    # 延時等待
    time.sleep(2)
    # 點擊進入第一個課程
    driver.find_element_by_css_selector(".single-course a").click()
    # 延時等待
    time.sleep(2)

3.3 自動觀看視頻

def watch_video(driver):
    # 獲取視頻元素標籤
    video = driver.find_element_by_tag_name("video")
    # 獲取視頻總時長
    total_time = driver.execute_script("return arguments[0].duration;", video)
    # 開始播放視頻
    driver.execute_script("arguments[0].play();", video)
    start_time = time.time()
    # 循環觀看視頻直至播放完畢
    while time.time() - start_time < total_time:
        # 間隔時間為5秒
        time.sleep(5)
    # 暫停視頻播放
    driver.execute_script("arguments[0].pause();", video)

3.4 自動答題

def answer_questions(driver):
    # 獲取題目元素標籤
    questions = driver.find_elements_by_css_selector(".question")
    # 循環答題
    for question in questions:
        # 獲取題目類型
        q_type = question.get_attribute("data-type")
        if q_type == "single_choice":  # 單選題
            # 獲取選項元素標籤
            choices = question.find_elements_by_css_selector(".choice-item")
            # 隨機選擇一個選項
            random.choice(choices).click()
        elif q_type == "multi_choice":  # 多選題
            # 獲取選項元素標籤
            choices = question.find_elements_by_css_selector(".choice-item")
            # 隨機選擇兩個選項
            random_choices = random.sample(choices, 2)
            for choice in random_choices:
                choice.click()
        elif q_type == "judge":  # 判斷題
            # 獲取選項元素標籤
            choices = question.find_elements_by_css_selector(".choice-item")
            # 隨機選擇一個選項
            random.choice(choices).click()
        else:  # 填空題
            # 獲取填空文本框元素標籤
            input = question.find_element_by_css_selector(".freetext-input")
            # 輸入隨機字符串
            input.send_keys("".join(random.choices(string.ascii_letters + string.digits, k=10)))

四、腳本運行

在運行腳本之前,需要在代碼中添加如下信息:

  • 需要學習的課程名稱;
  • 知到網站的用戶名和密碼。

配置完成後即可運行腳本,自動完成知到刷課任務。

if __name__ == '__main__':
    #更換成你的學校課程
    course_name = "理綜物理課程"
    #更改成你的知到網站賬號密碼
    username = "your_username" 
    password = "your_password"
    #啟動Chrome瀏覽器
    driver = webdriver.Chrome()
    #登錄知到網站
    login_knowbox(username, password, driver)
    #選擇課程並觀看視頻
    select_class(driver)
    watch_video(driver)
    #答題
    answer_questions(driver)
    #關閉瀏覽器
    driver.quit()

原創文章,作者:SPXQW,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368918.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
SPXQW的頭像SPXQW
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相關推薦

  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python腳本控制其他軟件

    Python作為一種簡單易學、功能強大的腳本語言,具有廣泛的應用領域,在自動化測試、Web開發、數據挖掘等領域都得到了廣泛的應用。其中,Python腳本控制其他軟件也是Python…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • Python zscore函數全面解析

    本文將介紹什麼是zscore函數,它在數據分析中的作用以及如何使用Python實現zscore函數,為讀者提供全面的指導。 一、zscore函數的概念 zscore函數是一種用於標…

    編程 2025-04-29
  • 全面解讀數據屬性r/w

    數據屬性r/w是指數據屬性的可讀/可寫性,它在程序設計中扮演着非常重要的角色。下面我們從多個方面對數據屬性r/w進行詳細的闡述。 一、r/w的概念 數據屬性r/w即指數據屬性的可讀…

    編程 2025-04-29
  • Python計算機程序代碼全面介紹

    本文將從多個方面對Python計算機程序代碼進行詳細介紹,包括基礎語法、數據類型、控制語句、函數、模塊及面向對象編程等。 一、基礎語法 Python是一種解釋型、面向對象、動態數據…

    編程 2025-04-29
  • Python自動化運維腳本

    Python自動化運維腳本是使用Python編寫的代碼,可以幫助管理員自動化執行繁瑣、重複的操作任務。通過Python自動化運維腳本,管理員可以在更短的時間內完成工作,提高工作效率…

    編程 2025-04-28
  • Matlab二值圖像全面解析

    本文將全面介紹Matlab二值圖像的相關知識,包括二值圖像的基本原理、如何對二值圖像進行處理、如何從二值圖像中提取信息等等。通過本文的學習,你將能夠掌握Matlab二值圖像的基本操…

    編程 2025-04-28
  • 使用Python圖書館搶座腳本的完整步驟

    本文將從多個方面詳細介紹如何使用Python編寫圖書館的座位搶佔腳本,並幫助您快速了解如何自動搶佔圖書館的座位,並實現您的學習計劃。 一、開發環境搭建 首先,我們需要安裝Pytho…

    編程 2025-04-28
  • 瘋狂Python講義的全面掌握與實踐

    本文將從多個方面對瘋狂Python講義進行詳細的闡述,幫助讀者全面了解Python編程,掌握瘋狂Python講義的實現方法。 一、Python基礎語法 Python基礎語法是學習P…

    編程 2025-04-28

發表回復

登錄後才能評論