使用Python实现自动刷题 P2

您所在的位置:网站首页 网页考试自动答题源码是什么 使用Python实现自动刷题 P2

使用Python实现自动刷题 P2

2024-07-08 21:15| 来源: 网络整理| 查看: 265

使用Python实现自动刷题 P2 只做学习交流,不做任何商业用途 不同于P1的漏洞,这次是题库爬到本地进行匹配 没有第一篇详细,主要讲讲思路传送门 集刷题和补全题库为一体

源码:

github: https://github.com/liliuyang-808/sab.git百度网盘: 链接:https://pan.baidu.com/s/1UdPIlQyd1_nudhdjespdfA 提取码:1320

在百度网盘里有操作视频

因为直接用答题的网站违规 , 所以自己写了个答题网站 . 在源码里有. 写的稀烂,凑活着看.

大体思路

控制浏览器模拟点击将题目和答案存进txt , 用正则匹配将txt里题目和答案补全(来回爬…)

需要导入的模块

from selenium import webdriver 控制浏览器用 selenium下载地址 chrome浏览器下载地址 chromedrive 火狐drive edge_drive 推荐篇配置教程 import time 控制程序暂停防止网络延迟出现错误 py3内置模块不用下载 import re

导入模块

from selenium import webdriver import re

初始化环境

dr = webdriver.Chrome() dr.maximize_window() dr.get('答题网站地址/bank/index.html')

在这里插入图片描述

答题网站页面 自动选题

爬取页面中所有题目和选项

html = dr.page_source timu = re.findall('(.*?)', html) # 爬取答案 # 爬取题目 多做一步原因是要分出一题多少选项 xuxa_s = re.findall('(.*?)', html.replace("\n", "")) xuxa = [] for i in xuxa_s: xuxa.append(re.findall('(.*?)', i)) # 现在 xuxa列表里是[[A..,B..,C..,D..,E..],[A..],[A..,B..]]

存储所有选项按钮

正确答案在整合后会以索引方式结束 , 用索引去点击选项 button=[]#存储所有选项按钮 for nk in dr.find_elements_by_tag_name("input"): button.append(nk)

在txt文件中爬下存储好的题目->答案(如果没有也没问题,有补全的代码)

with open(r'./write.txt', encoding='utf-8') as f: res = f.read() reo_timu=re.findall('题目:(.*?)\n',res) reo_xuxa=re.findall('答案:(.*?)\n',res)

在这里插入图片描述 到正文了

also=[] #所有正确答案 一维数组 also_txt=[]#正确答案 不过有特殊定义的符号 "|" 可以看上面那张图最后一行 这是隔开多个选项用的 number=[]#存储txt中没有的题目的序号 在最后补全txt的地方有用到 xuxa_index=[i for arr in xuxa for i in arr]#转成一维数组方便对齐索引 """ 因为 xuxa列表为了让5个6个乃至10个选项穿插在整体中而程序不崩溃 ,才出此下策 [[A..,B..,C..,D..,E..],[A..],[A..,B..]] 但是所有选项按钮却是个一维的数组 需要让答案下标和选项按钮下标对齐才好操作 """ for i in range(0,len(timu)): if timu[i] in reo_timu:#判断页面中的题目在txt中存不存在 also_txt.append(reo_xuxa[reo_timu.index(timu[i])])#正确答案 (目前还是文字形式) else: number.append(i)#没有的题目的序号 also_txt.append(xuxa[i][0])#如果没有 , 填入选项中第一项 for a in also_txt: lis = a.split('|') for j in lis: also.append(j)#在这里所有正确选项变成一维数组

将选项列表变成下标索引 并点击

#所有正确选项索引 index=[] for i in also: index.append(xuxa_index.index(i)) #用正确答案索引点击按钮 for i in index: button[i].click()

在这里插入图片描述

自动爬取补满文档

提交后补全txt部分

将错题目答案放入add_to 在写入txt这里就不过多赘述. 每个网站交卷后都不一样 ,这里逻辑简单根据需要更改就行 input("提交后: ") add_to = {} lang=dr.page_source temp = re.findall('(.*?)', lang) for num in number: add_to[timu[num]]=temp[num] print(add_to) write_in = open(r'./write.txt', 'a', encoding='utf-8') # 用可读写的权限打开txt for code_a, answer_a in add_to.items(): # 同上一个for一样的道理 write_in.write("题目:" + code_a + "\n") # 存储正确的题目和正确答案 write_in.write("答案:" + answer_a + "\n") # 同上 一切只做学习交流, 不做任何商业用途 为什么不用ABCD 或者编号直接代替正确答案: 因为有些网站答案随机排序 受一大佬启发才写出这里,也许没大佬到死也完不成[万分感谢,向您鞠躬]

上一篇违禁文章里的问题有位大佬解决了 取图片地址 relativePath后面两个哈希值 第二个哈希值减去账号id就是真实的图片地址 relativePath=0009000/1543302712345/bf1b51531de4c292667e1c4c2300b603.jpg&imageType=2 https://tiku.kgc.cn/testing/index/123456/a76e1c6d3baf4be1b9aa172fa6273305

我qq:2025450852 欢迎交流



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3