【Python黑科技】自动答题项目代码分析(保姆级图文+实现代码)


欢迎关注 『Python黑科技』 系列,持续更新中
欢迎关注 『Python黑科技』 系列,持续更新中

实现效果

在这里插入图片描述


图片素材和源码

已经上传至我的gitee仓库
python黑科技
在这里插入图片描述


实现思路

1. 打开对应网页,做好准备工作

一定要在实例化之前先确保好默认路径下安装了谷歌浏览器,并在python文件夹下存放了对应的驱动,可以查看我的博客https://blog.csdn.net/u011027547/article/details/122511740

# 导入浏览器对象
from selenium import webdriver
# 导入时间模块
import time
# 导入元素定位功能
from selenium.webdriver.common.by import By
# 导入数据请求模块
import requests
# 数据解析模块
import parsel


# 实例化一个浏览器对象
driver = webdriver.Chrome()
#一定要在实例化之前先确保好默认路径下安装了谷歌浏览器,并在python文件夹下存放了对应的驱动
#可以查看我的博客 https://blog.csdn.net/u011027547/article/details/122511740

# 打开浏览器的窗口
driver.get('https://www.jsyks.com/kmy-mnks')
# 等待一段时间用于加载页面
time.sleep(2)
# 最大化浏览器的窗口
driver.maximize_window()

# 隐式等待,10秒钟内只要找到了元素就开始执行,10秒钟后未找到,就超时,也就是说一直查找,直到超出了10秒;
driver.implicitly_wait(10)

2. 获取正确答案

  • 通过查看本题分析的接口获取答案并返回
我们发现这个答案解析的url后缀 e4924 就是前面答题时的属性值c的值
https://tiba.jsyks.com/Post/e4924.htm

在这里插入图片描述

在这里插入图片描述
答案的位置,右键复制选择复制Selector路径
在这里插入图片描述

    # 文本数据转对象
    selector = parsel.Selector(response)
    answer = selector.css('#question > h1 > u::text').get()#question > h1 > u
    # print(answer)

3. 答题

  • 大体结构:很经典的先找对象列表(也就是题目组),然后通过循环的方式对于每一道进行答题。
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()# #question > h1 > u
    # 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
        if len(choose) > 2:#A、间歇制动
            choose = choose[0]#取得 A 这个选项
        if answer == choose:#如果选择和答案一致
            b.click()#点击正确选项

4. 提交试卷

查找class样式为btnJJ的提交按钮,并用click()点击
在这里插入图片描述

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


实现代码

# 导入浏览器对象
from selenium import webdriver
# 导入时间模块
import time
# 导入元素定位功能
from selenium.webdriver.common.by import By
# 导入数据请求模块
import requests
# 数据解析模块
import parsel


# 实例化一个浏览器对象
driver = webdriver.Chrome()
#一定要在实例化之前先确保好默认路径下安装了谷歌浏览器,并在python文件夹下存放了对应的驱动
#可以查看我的博客 https://blog.csdn.net/u011027547/article/details/122511740

# 打开浏览器的窗口
driver.get('https://www.jsyks.com/kmy-mnks')
# 等待一段时间用于加载页面
time.sleep(2)
# 最大化浏览器的窗口
driver.maximize_window()

# 隐式等待,10秒钟内只要找到了元素就开始执行,10秒钟后未找到,就超时,也就是说一直查找,直到超出了10秒;
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()# #question > h1 > u
    # 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
        if len(choose) > 2:#A、间歇制动
            choose = choose[0]#取得 A 这个选项
        if answer == choose:#如果选择和答案一致
            b.click()#点击正确选项

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


# 添加阻塞,如果注释掉那么会直接关闭浏览器,主要是看看答卷的效果特意加的。
input()

# 关闭浏览器
driver.quit()

总结

大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python黑科技!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-2-1

欢迎关注 『Python黑科技』 系列,持续更新中
欢迎关注 『Python黑科技』 系列,持续更新中
【Python黑科技】tkinter库实战7个小项目合集(保姆级图文+实现代码)
【Python黑科技】tkinter库实战制作一个计算器(保姆级图文+实现代码)
【Python黑科技】tkinter库实战制作一个记事本(保姆级图文+实现代码)
【Python黑科技】tkinter库实战用户的注册和登录(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“2048”小游戏(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“俄罗斯方块”小游戏(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)
【Python黑科技】tkinter库实战“连连看”小游戏(保姆级图文+实现代码)

【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包exe】
【免登陆爬虫一键下载知乎文章图片(保姆级图文+实现代码)】
【孤独的程序员和AI机器人朋友聊天解闷(免费接口+保姆级图文+实现代码注释)】
【几行代码绘制gif动图(保姆级图文+实现代码)】
【几行代码实现网课定时循环截屏,保存重要知识点(保姆级图文+实现代码)】
【常用的user_agent 浏览器头爬虫模拟用户(保姆级图文+实现代码)】
【更多内容敬请期待】


  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值