前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化篇 | 模糊匹配助力自动答题

自动化篇 | 模糊匹配助力自动答题

作者头像
老肥码码码
发布2020-01-17 15:45:21
1.6K28
发布2020-01-17 15:45:21
举报

点击上方“算法与数据之美”,选择“置顶公众号”

更多精彩等你来!

前几天的一篇文章给大家分享了利用 Selenium 自动刷课的脚本,时光飞逝,挂脚本刷完时长,又到了要考试的日子。对于这种 “无关紧要” 的考试,我打算继续使用 聪明 的自动化工具帮我完成考试~

爬取题库

想要完成作答,免不了需要题库的支撑。考试的题目也都是源于题库,甚至原封不动从题库中抽取题目进行测试。爬虫那可是咱的拿手好戏,说干咱就干!

加入必要的 params 参数,构造简单的 requests 请求,我们可以轻松的访问到题库所在网页。利用 XPath 我们可以获得问题及其答案。题库这里的题型有判断题以及单项选择题两种,我们可以按照相同的方式将他们存入相应的字典中。

接着使用不同的参数,获取不同类型题库的数据并汇总到同一个txt文件中。

模糊匹配

这里用到了第三方库 fuzzywuzzy 。fuzzywuzzy 是一个简单易用的模糊字符串匹配工具包。它依据 Levenshtein Distance 算法来计算两个序列之间的差异。

Levenshtein Distance 算法,又叫 Edit Distance 算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。

我们利用这个库可以实现试题题目与题库题库的模糊匹配,认定题库中和试题相似度最高的题目的答案就是我们需要填入的答案。

代码语言:javascript
复制
from fuzzywuzzy import process
a=process.extractOne(question, dic.keys())
ans=dic[a[0]]

自动化实现

通过模糊匹配我们可以从题库中获得试题的答案,接着就需要把整个答题过程用自动化工具实现,当然少不了好帮手 selenium 。

上次提到的自动登录已经实现了,就不再赘述。我们在登录之后操作浏览器进入考试界面并且获取试题的文本内容,然后利用模糊匹配得到相应的答案,点击对应的按钮,完成答题操作。

每答10道题完成相应的翻页操作。在完成答题之后,点击提交按钮并且关闭"确认交卷"的弹出框。下面是效果图片~答题准确率高达100%,这个题就是题库的题,石锤了!

本文所有代码已上传至后台,回复 自动答题 即可获得~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档