前几天的一篇文章给大家分享了使用Selenium自动刷课的脚本。对于这种“无关紧要”的考试,我打算继续使用智能自动化工具来帮我完成考试~想要爬取题库完成答题,就不可避免地需要题库的支持。考题也是从题库中导出的,甚至是原封不动地从题库中提取出题来进行测试。爬虫是我们的强项,言出必行!添加必要的params参数,构造一个简单的requests请求,我们就可以轻松访问题库所在的网页。使用XPath我们可以获得问题及其答案。题库中的题型分为判断题和选择题两种。我们可以用同样的方式将它们存储在相应的字典中。然后使用不同的参数获取不同类型题库的数据,汇总到同一个txt文件中。模糊匹配这里使用第三方库fuzzywuzzy。fuzzywuzzy是一个简单易用的模糊字符串匹配工具包。它根据Levenshtein距离算法计算两个序列之间的差异。LevenshteinDistance算法,也称为EditDistance算法,是指两个字符串之间从一个字符串转换为另一个字符串所需的最小编辑操作次数。允许的编辑操作包括用另一个字符替换一个字符、插入一个字符和删除一个字符。一般来说,编辑距离越小,两个字符串之间的相似度就越大。我们可以利用这个库来实现试题和题库的模糊匹配,确定与题库中试题相似度最高的题目答案就是我们需要填写的答案。来自fuzzywuzzyimportprocessa=process.extractOne(question,dic.keys())ans=dic[a[0]]自动实现通过模糊匹配,我们可以从题库中得到试题的答案,接下来我们需要自动化整个答题过程工具实现,当然少不了selenium这个好帮手。上次提到的自动登录已经实现,这里不再赘述。登录后,我们操作浏览器进入考试界面,获取试题的文本内容,然后通过模糊匹配得到相应的答案,点击相应的按钮完成答题操作。每回答10题完成相应的翻页操作。回答完问题后,点击提交按钮,关闭“确认提交”弹框。下面是效果图~答题准确率高达100%。
