本文内容会涉及到如下文章的内容,建议首先阅读如下文章html
http://www.javashuo.com/article/p-vecfwmnp-gw.htmlpython
学堂在线课程页面URL和JSON的简单分析json
学堂在线的课堂练习题目经过下面这个API返回小程序
https://next.xuetangx.com/api/v1/lms/exercise/get_exercise_list/224269/api
其中的 224269 在后文会说起cookie
GET的时候,只须要headers里带上Cookies就好ui
API返回形式:jsoncode
以前看到有人写了个优学院(Ulearning)自动答题脚本,原理就是利用了优学院的获取答案的APIhtm
我就想看看,这个json里会不会有答案呢?对象
结果看了一下,还真就有。。
JSON结构在这里很少分析了,直接看答案在哪
如图
JSON-data-probelms-x(问题序号,从0开始)-user-answer
(原谅我笨拙的表达方法..不太懂json)
拿这个练习举例
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
目前来看,只有
exercise
和quiz
类型的页
对象 才会有具体值,其余对象的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