首页 > 编程语言 >[python] Python制作自动填写脚本,100%准确率

[python] Python制作自动填写脚本,100%准确率

时间:2022-10-28 22:35:15浏览次数:41  
标签:获取 python 100% driver Python choose 答案 answer --

本次案例代码实现思路:

打开考试网站 selenium --> 浏览器驱动 --> 操作浏览器 <模拟人的行为做操作浏览器> 获取答案 获取答案网站链接 获取问题以及答案内容 对比题目以及答案 选出正确答案 获取问题答案选项 和正确的答案进行对比 如果正确答案和选择答案一致, 那就进行点击 进行点击答题

最终效果

 

代码实现
导入模块 

from selenium import webdriver
# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel

 

打开浏览器 webdriver.Chrome(‘驱动路径’)

1.驱动和代码放在一起

 
driver.get('https://www.jsyks.com/kmy-mnks')

2.驱动文件和python安装目录放在一起

driver = webdriver.Chrome(r'D:\download\anaconda\chromedriver.exe')
# 设置全屏
driver.maximize_window()

输入网址

 
driver.get('https://www.jsyks.com/kmy-mnks')

获取问题及答案

lis = driver.find_elements_by_css_selector('div.Exam ul li')
page = 1
# for循环遍历, 提取列表里面的元素
for li in lis:
    # 获取属性
    answer_id = li.get_attribute('c')  #  答案链接的ID
    # https://tiba.jsyks.com/Post/8f0e0.htm
    answer_url = f'https://tiba.jsyks.com/Post/{answer_id}.htm'
    # 获取答案以及问题  --> <Response [200]> 表示请求成功
    response = requests.get(url=answer_url)
    # 获取网页内容 --> 提取答案以及问题内容  转换数据类型
    selector = parsel.Selector(response.text)
    # 获取问题 --> 把问题和答案保存数据库保存 直接比较答案, 自己建立问题库, 从问题找答案
    question = selector.css('#question h1 strong a::text').get()
    # 获取答案
    answer = selector.css('#question h1 u::text').get()

点击判断

 
if answer == '错':
    # 把答案内容改成 错误  重新赋值一下
    answer = '错误'
#  # 如果答案内容是对的话
elif answer == '对':
    # 把答案内容改成正确重新赋值一下
    answer = '正确'
# 获取问题选项内容 --> b标签 全部获取下来  b标签是在li标签里面  driver 表示整个网页
bs = li.find_elements_by_css_selector('b')
num = 1
for b in bs:
    # 获取b标签文本
    choose = b.text
    # 判断如何答案比两个元素多的, 就取一个元素
    if len(choose) > 2:
        # [0]提取 字符串里面第一个元素
        choose = choose[0]
    # 进行对比 选项和答案一致 是否一模一样
    if choose == answer:
        # 点击选项 --> 定位到点击那个元素 LI1 --> 1 表示第一题  b:nth-child(3) 表示第一个答案
        driver.find_element_by_css_selector(f'#LI{page} b:nth-child({2+num})').click()
        print('点击了')
    else:
        print('选项是', choose, '答案是', answer)
    print(choose)
    num +=1
page += 1

点击提交试卷

如果过快,可能程序还没找到元素 <网页还没加载元素出来, 你就直接点了, 可能报错>

driver.find_element_by_css_selector('div.ExamBtn u.btnJJ').click()

 

     

标签:获取,python,100%,driver,Python,choose,答案,answer,--
From: https://www.cnblogs.com/liuyebai/p/16837706.html

相关文章

  • python第一次课
    Python学习第一次学习引用第一次写博客没什么好分享的,把我学习python的心得分享出来;一是可以让新入IT行业的同学有一个好的榜样,二是不会写博客的程序员不是一个好的程......
  • python列表套字典去重
    最近在写工具,拿到数据,发现有重复的,想到用set去重,结果报错了,哈哈,重新学习下#例子:data_list=[{'id':1,'name':'user01'},{'id':2,'name':'user02'},{'id':1,'name':'......
  • Python 基础语法
    一、字面量字面量:在代码中,被写下来的固定的值,称之为字面量数字(Number)字符串(String)列表(List):有序的可变序列元祖(Tuple):有序的不可变序列集合(Set):无序不重复集合字典(Dic......
  • 【基础知识】为python部署第三方库(设备可联网版)
    “大家好哇!继上次我们说完怎么安装python之后,这一次给大家分享一下怎么根据自己的需求来部署所需要的库,如numpy库等。”01安装第三方库众所周知,在python下面有很多库,可......
  • 【python】装饰器参数
    装饰器是AOP编程思想,给主体函数增加功能,又不让代码入侵到主体函数中,实现高内聚,低耦合。参数有两种,一种是功能函数带参数、另外一种是装饰器函数带参数,如果装饰功能部分代......
  • 【基础知识】为python部署第三方库(设备不可联网版)
    “大家好哇!继上次我们说完怎么安装python之后,这一次给大家分享一下怎么根据自己的需求来部署所需要的库,如numpy库等。”01安装第三方库我们在前面已经说过了当设备可以......
  • Python time.strptime()方法
    time.strptime()函数根据指定的格式把一个时间字符串解析为时间元组。importtimefromdatetimeimportdatetimeresult=time.strptime("1.2022-12-1010:45:00","......
  • 10道Python面试题
    1、Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。浅拷贝:创建一个新的对象,但它包......
  • python时间戳转换
    importtime,datetime#当前时间转时间戳maintenance_time=(datetime.datetime.now()+datetime.timedelta()).strftime("%Y-%m-%d%H:%M:%S")struct_time=time.......
  • python 爬虫 ----- xpath
    xpath是在XML文档中搜索内容的一门语言html是xml的一个子集 xml代码示例"""<book><id>1</id><name>野花遍地香</name><price>1.23</price><......