如何利用python实现选择题自动答题(科一) 您所在的位置:网站首页 一、选择题 如何利用python实现选择题自动答题(科一)

如何利用python实现选择题自动答题(科一)

2024-07-09 20:43| 来源: 网络整理| 查看: 265

  效果图展示                                                                                                                     1.导入所需的模块: from selenium import webdriver import time from selenium.webdriver.common.by import By import requests import parsel

这段代码导入了所需的模块。 selenium 用于控制浏览器, time 用于处理时间, requests 用于发送 HTTP 请求, parsel 用于解析 HTML 或 XML 数据。                                                       

2.实例化一个浏览器对象: driver = webdriver.Chrome()

通过实例化 webdriver.Chrome(),创建一个 Chrome 浏览器对象。                                                  

3.打开指定网页: driver.get('https://www.jsyks.com/kmy-mnks')

使用 get() 方法打开指定的网页。                                                                                               

4.强制等待和最大化浏览器窗口: time.sleep(2) driver.maximize_window()

使用 time.sleep() 方法进行强制等待 2 秒,然后使用 maximize_window() 方法最大化浏览器窗口。                                                                                                                                           

5.隐式等待: driver.implicitly_wait(10)

使用 implicitly_wait() 方法设置隐式等待时间为 10 秒。这意味着在查找元素时,如果元素未立即出现,将最多等待 10 秒。                                                                                              

6.查找题目选项并选择正确答案: lis = driver.find_elements(By.CSS_SELECTOR, '.Content>li') for li in lis: # 获取题目id rid = li.get_attribute('c') url = f'https://tiba.jsyks.com/Post/{rid}.htm' response = requests.get(url=url).text selector = parsel.Selector(response) answer = selector.css('#question u::text').get() if answer == '对': answer = '正确' elif answer == '错': answer = '错误' bs = li.find_elements(By.CSS_SELECTOR, 'B') for b in bs: choose = b.text if len(choose) > 2: choose = choose[0] if answer == choose: b.click()

在 lis = driver.find_elements(By.CSS_SELECTOR, '.Content>li') 中,使用 CSS 选择器找到题目列表的每个题目选项。然后,依次处理每个题目:                                                                  1.获取题目的 id,并构造获取题目内容的 URL。                                                                              2.使用 requests.get() 方法发送请求并获取响应体的文本数据。                                                  3.使用 parset.Selector() 构造一个 Selector 对象来解析响应体。                                              4.使用 CSS 选择器 '#question u::text' 获取题目的答案。将答案进行处理,将 '对' 转换为 '正确',将 '错' 转换为 '错误'。                                                                                              5.使用 li.find_elements(By.CSS_SELECTOR, 'B') 找到当前题目的选项。遍历选项,并将选项与答案进行比较,如果匹配,则点击该选项。                                                                      

7.提交试卷: driver.find_element(By.CSS_SELECTOR, '.btnJJ').click()

通过 CSS 选择器找到提交试卷的按钮,并点击它。                                                                 

8.添加阻塞: input()

通过 input() 方法添加一个阻塞,使程序暂停在这里,等待用户输入。                                      

9.关闭浏览器: driver.quit()

使用 quit() 方法关闭浏览器。                                                                                                         

     10.全部代码如下: """ [使用模块]: requests >>> pip install requests selenium >>> pip install selenium parsel >>> pip install parsel time """ # 导入浏览器对象 from selenium import webdriver # 导入时间模块 import time # 导入元素定位功能 from selenium.webdriver.common.by import By # driver.find_element_by_css_selector() 4 一定会报错 弃用 3 # 导入数据请求模块 import requests # 数据解析模块 import parsel # 实例化一个浏览器对象 driver = webdriver.Chrome() # 打开浏览器的窗口 driver.get('https://www.jsyks.com/kmy-mnks') # 强制等待 time.sleep(2) # 最大化浏览器的窗口 driver.maximize_window() # 隐式等待 智能 driver.implicitly_wait(10) # elements 返回的是一个列表对象 lis = driver.find_elements(By.CSS_SELECTOR, '.Content>li') # print(len(lis)) # print(lis) for li in lis: time.sleep(0.2) # 优先考虑使用随机数 rid = li.get_attribute('c') # print(rid) url = f'https://tiba.jsyks.com/Post/{rid}.htm' # 获取到响应体对象的文本数据 response = requests.get(url=url).text # 转对象 selector = parsel.Selector(response) answer = selector.css('#question u::text').get() # print(answer) # 重新赋值 if answer == '对': answer = '正确' elif answer == '错': answer = '错误' # else: 不确定的情况 # print(answer) bs = li.find_elements(By.CSS_SELECTOR, 'B') for b in bs: # 获取选项的内容 choose = b.text # print('题目的选项是', choose) # print('正确答案是', answer) # 可能错题 # if answer in choose: # # 正确答案的点击操作 # b.click() if len(choose) > 2: choose = choose[0] if answer == choose: b.click() # 提交试卷 driver.find_element(By.CSS_SELECTOR, '.btnJJ').click() # 添加阻塞 input() # 关闭浏览器 driver.quit()

创作不易,留下一个小点赞和关注呗,编程之路,一起加油,朋友



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有