一、脚本简介
知到刷课脚本是一款基于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()