1.查看当前的所有问题列表
在F12 使用问题的具体内容搜索后发现了我们想获取的数据
[JavaScript] 纯文本查看 复制代码
https://homeworkapi.open.com.cn/getHomework?studentHomeworkId=${你的id}
2.手动获取问题答案
当初在获取正确答案的时候还是有些曲折的,以前的网站没有更新之前是可以,通过一个接口老获取全部的答案信息的,更新后接口也是无效了。
在第一版的解决办法中论坛中有人推荐了(我自己搜的)
简答题(不用登陆搜索问题)
http://www.jiandati.com/
能够找到90%问题的答案。
我用的是
selenium+jsoup 获取问题的json数据进行自动的答案爬取
Constant.driver.get(href); Document a_parse = Jsoup.parse(Constant.driver.getPageSource()); Elements content = a_parse.body().select(".panel.panel-success"); Elements select1 = content.select(".content.question-content"); String text = select1.text(); answer.setAnswerAddress(href); answer.setAnswer(text); //找到问题 Elements select2 = a_parse.body().select("div[itemprop=mainEntity]"); Elements select3 = select2.select("div[itemprop=text].content.question-content"); //问题元素 Element element1 = select3.get(0); Elements p = element1.select("p"); boolean isanswerTitle=true; for (Element element3 : p) { ArrayList<String> answerOptions = new ArrayList<>(); if (isanswerTitle){ //问题 String text1 = element3.text(); answer.setAnswerTitle(text1); isanswerTitle=false; }else { answerOptions.add(element3.text()); } answer.setAnswerOptions(answerOptions); }// System.out.println(select3); } catch (Exception e) { e.printStackTrace(); } }else{ System.out.println("没找到答案"); }
刚开始还觉得可以能够勉强使用,但是使用时间越长发现的问题也就越多,搜索的问题和搜索的结果进行包含比对总是。。有呢么几个字不匹配(特殊字符已经忽略了)但是答案是正确的,还有就是答案的顺序和奥鹏的答案顺序是不同的,互相比对有的是中文有的是阿拉伯数字不是那么好比对影响答案获取的精度。
使用java写起太麻烦了。有时候还不如手动进行单个问题的搜索快。。
3.通过接口获取答案
等我第一次手动打完试卷后,发现了有一个功能是叫错题本的功能里边打开会有问题和对应的真确答案。
新大陆出来了
研究了半天
http://learn.open.com.cn/StudentCenter/OnlineJob/GetQuestionDetail?bust=1596254333221&itemBankId=C46ED2A1-F33D-4FA2-8FC7-3431368A5F54&questionId=06b0c124-0b6d-4bee-aadc-ef667674b145&_=1596253257714
这个是获取答案的接口地址(需要token和Authorization等一验证信息)
从上方接口地址可以看出来他是需要4个参数的
bust
(new Date()).getTime()
时间戳(通过js找到的)
itemBankId
问题接口的I4字段
I4D的UUID
questionId
问题接口的I1字段
I1的UUID(问题id)
_
1596253257714
不知道干嘛的反正能用
{ "status": 0, "message": "获取成功", "data": { "I1": "b8c9ffdf-f845-4fe2-8c94-f0fb1e60a63a", "I2": "在Excel 2003中,电子工作表中的行号为________。", "I3": 1, "I4": "c46ed2a1-f33d-4fa2-8fc7-3431368a5f54", "I5": "00000000-0000-0000-0000-000000000000", "I6": [ "数字", "字母", "数字与字母混合", "第一个为字母其余为数字" ], "I7": [ "0" ], "I8": [ "作业" ], "I9": 1.0, "I10": "", "I11": 0, "I12": "", "I13": 1.0, "I14": "00000000-0000-0000-0000-000000000000", "I15": [], "I16": 0.0, "I17": 0, "I18": "", "I19": 0, "I20": "", "I21": "", "I22": "DA6A013C-E076-4DA8-B585-D2B789974233,", "I23": "2017-09-06 19:59:46", "I24": null, "I25": 1, "I26": 1, "I27": 1, "I28": 445969, "I29": "2020-01-12 14:36:23", "I30": "S1", "I31": 0, "I32": 0, "I33": "", "I34": 0, "I35": 0, "Sub": null, "Choices": [ { "IsCorrect": true, "I1": "A", "I2": "数字" }, { "IsCorrect": false, "I1": "B", "I2": "字母" }, { "IsCorrect": false, "I1": "C", "I2": "数字与字母混合" }, { "IsCorrect": false, "I1": "D", "I2": "第一个为字母其余为数字" } ], "Knowledges": [], "KnowledgesJson": null }}
返回值中的I7字段是真确的答案 ,在查看问题接口中正好I7字段是没有的应该是被屏蔽掉了
附带的一些其他字段说明
I2
问题内容
I1
questionId(问题id)
I4
itemBankId
I6
选项
I7
正确答案
I8
作业类型(考试或者作业)
I30
问题类型(S1是单选,S2是多选,S3是判断)
Choices
选项详情
其他
需要的时候在研究吧
最近会学习一下油猴脚本的编写,写个自动获取问题答案的插件,毕竟手动答题太累了
有什么好的油猴脚本教程可以推荐一下我
最后 希望大家给个免费的点赞我等级太低了。。
声明:本站所有资源均由网友分享,如有侵权内容,请在文章下方留言,本站会立即处理。