利用API獲取【學堂在線】課堂練習答案

學堂在線獲取課堂練習答案

前言

本文內容會涉及到如下文章的內容,建議首先閱讀如下文章html

http://www.javashuo.com/article/p-vecfwmnp-gw.htmlpython

學堂在線課程頁面URL和JSON的簡單分析json

先康康效果

image-20200409223656874

原理

學堂在線的課堂練習題目經過下面這個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結構在這裏很少分析了,直接看答案在哪

image-20200409224641658

如圖

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
相關文章
相關標籤/搜索