本文內容會涉及到如下文章的內容,建議首先閱讀如下文章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