利用API获取学堂在线课堂练习答案

Posted bakaft

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用API获取学堂在线课堂练习答案相关的知识,希望对你有一定的参考价值。

学堂在线获取课堂练习答案

前言

本文内容会涉及到以下文章的内容,建议首先阅读以下文章

https://www.cnblogs.com/bakaft/p/12670088.html

学堂在线课程页面URL和JSON的简单分析

先康康效果

技术图片

原理

学堂在线的课堂练习题目通过下面这个API返回

https://next.xuetangx.com/api/v1/lms/exercise/get_exercise_list/224269/

其中的 224269 在后文会提及

GET的时候,只需要headers里带上Cookies就好

API返回形式:json

之前看到有人写了个优学院(Ulearning)自动答题脚本,原理就是利用了优学院的获取答案的API

我就想看看,这个json里会不会有答案呢?

结果看了一下,还真就有。。

JSON结构在这里不多分析了,直接看答案在哪

技术图片

如图

JSON-data-probelms-x(问题序号,从0开始)-user-answer

(原谅我笨拙的表达方法..不太懂json)

简单的python实现

拿这个练习举例

https://next.xuetangx.com/learn/THU05021000376/THU05021000376/1515481/exercise/1340122

然而,它最终对应的题目数据API链接是

https://next.xuetangx.com/api/v1/lms/exercise/get_exercise_list/224269/

这里,1340122就是上篇文章提到的页id,而这个 224269 ,方便起见,我这里就叫它 答案ID

那么这个答案ID是怎么来的?

在这个API返回的json里

https://next.xuetangx.com/api/v1/lms/learn/leaf_info/1515481/1340122/?sign=THU05021000376

这个URL的参数在上篇文章都有提及

请带cookies发送GET请求

通过这个,可以查询到当前 的信息,也就是 leaf_info

其中可以提取到 leaf_type_id ,也就是我说的 答案ID

目前来看,只有 exercisequiz类型的 对象 才会有具体值,其他对象的 leaf_type_id 值为 null

完成上面的理解之后,就可以拿Python来写个小程序实现一下

代码风格不太健康,仅供参考

import requests
response = requests.get(‘https://next.xuetangx.com/api/v1/lms/exercise/get_exercise_list/224270/‘, headers=headers)

Dict = response.json() #把json直接转成dict
problems = Dict[‘data‘][‘problems‘]
answers = ‘‘
for problem in problems:
    answer = each[‘user‘][‘answer‘][0]
    answers = answers + answer
print(‘答案就是!!‘ + answers)
#输出
#答案就是!!CCCAACCCCBAC

以上是关于利用API获取学堂在线课堂练习答案的主要内容,如果未能解决你的问题,请参考以下文章

Azure 机器人微软Azure Bot 编辑器系列 : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorial(代码片段

学堂在线视频课件课程下载工具,如何在电脑端下载学堂在线视频课件PDF,PPT到本地

奇点学堂|如何更好地利用大数据实现商业智能?

viewpager preload会调用api来获取数据吗?

linux课堂练习

ktor HTTP API 练习