Python實(shí)現(xiàn)智慧校園自動(dòng)評(píng)教全新版_第1頁
Python實(shí)現(xiàn)智慧校園自動(dòng)評(píng)教全新版_第2頁
Python實(shí)現(xiàn)智慧校園自動(dòng)評(píng)教全新版_第3頁
Python實(shí)現(xiàn)智慧校園自動(dòng)評(píng)教全新版_第4頁
Python實(shí)現(xiàn)智慧校園自動(dòng)評(píng)教全新版_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Python實(shí)現(xiàn)智慧校園自動(dòng)評(píng)教全新版因?yàn)榍懊娴奈恼轮幸呀?jīng)涉及到了登錄智慧校園的驗(yàn)證碼處理問題,所以本文將略過此過程。如登錄時(shí)遇到驗(yàn)證碼的情況,請(qǐng)參考此文。其實(shí)第一次使用有驗(yàn)證碼的話,可以在瀏覽器先登錄一次,然后再使用python代碼模擬登錄,驗(yàn)證碼就沒了。因?yàn)镃QCET智慧校園驗(yàn)證碼彈出是有限定條件的!

一、準(zhǔn)備工作

導(dǎo)包

importjson

importrequests

importuuid

fromfake_useragentimportUserAgent#隨機(jī)生成UserAgent

生成uuid和UA

#隨機(jī)生成uuid

uuid=uuid.uuid4()

#隨機(jī)UA

headers={'User-Agent':UserAgent().random}

二、登錄智慧校園

此過程不再做過多的贅述,直接上代碼吧!

#登錄智慧校園

deflogin():

login_url='/uaa/login_process'

data={'type':1,'deviceId':uuid,'username':'19030****','password':'xl*****5','img_code':''}

session=requests.session()

session.post(url=login_url,headers=headers,data=data)

returnsession

注:username:賬號(hào)password:密碼

三、進(jìn)行評(píng)教操作

1、進(jìn)入評(píng)教頁面觀察

從教學(xué)評(píng)價(jià)(學(xué)生)教學(xué)評(píng)價(jià)點(diǎn)擊學(xué)生雖然能夠看到教學(xué)評(píng)價(jià)頁面但是并非真的教學(xué)評(píng)價(jià)對(duì)應(yīng)的網(wǎng)址,故而需要在network中查看真正的教學(xué)評(píng)價(jià)頁面對(duì)應(yīng)的網(wǎng)址。按F12檢查網(wǎng)頁,然后進(jìn)行如下圖步驟的操作,就可以發(fā)現(xiàn)真正的教學(xué)評(píng)價(jià)網(wǎng)址了。

2、抓取評(píng)教時(shí)發(fā)起url請(qǐng)求操作

同樣在此教學(xué)評(píng)價(jià)頁面按F12調(diào)出開發(fā)者工具轉(zhuǎn)至Network那一欄,然后對(duì)一節(jié)課進(jìn)行評(píng)教。然后你會(huì)發(fā)現(xiàn)進(jìn)行評(píng)教的url請(qǐng)求操作,如下圖所示!

因此我們只需要用python模擬出同樣的請(qǐng)求操作就可以完成評(píng)教了!但是這個(gè)是個(gè)需要攜帶data的post請(qǐng)求,那么問題來了,數(shù)據(jù)該從那兒去獲取呢?

#以下為部分所需攜帶的data

advice:無

xh:1903011753

xm:xue

kkdm:

skjsjgh:200720020

skjsmc:上課老師姓名

remark:無

year:2025-2025

term:2

weekLy:周次

taskId:202520*********08

缺什么就去找什么,很容易發(fā)現(xiàn)在add的下面有一個(gè)list??梢云鋵?duì)應(yīng)的url發(fā)起post請(qǐng)求獲取上述所需信息。

代碼實(shí)現(xiàn):

#評(píng)教頁面

defevaluation(session):

session.get(url='/xg/teaching/student/xskb')

data={'pageSize':'10','pageNum':'1','isAsc':'asc','xnxq':'2025-2025-2','weekly':'16'

eval_jsons=json.loads(session.post(url='/xg/teaching/student/xskb/list',data=data).text)

add_data={

'evaluationProject':'[{"name":"老師教得怎么樣","id":"teach_situation","value":"5"},\

{"name":"學(xué)習(xí)收獲怎么樣","id":"learn_harvest","value":"5"},\

{"name":"紀(jì)律管理怎么樣","id":"discipline","value":"5"},\

{"name":"課堂互動(dòng)怎么樣","id":"interaction","value":"5"},\

{"name":"課后交流怎么樣","id":"communicat","value":"5"}]',

'advice':'無',

'remark':'無',

'kkdm':''

foreval_jsonineval_jsons['rows']:

isFlag=eval_json['complete']

ifisFlag:

print(eval_json['skjsmc']+'老師的《'+eval_json['kcmc']+'》已評(píng)價(jià)!')

else:

add_data['xh']=eval_json['xh']

add_data['xm']=eval_json['xm']

add_data['skjsjgh']=eval_json['skjsjgh']

add_data['skjsmc']=eval_json['skjsmc']

add_data['year']=eval_json['xn']

add_data['term']=eval_json['xq']

add_data['weekLy']=eval_json['weekly']

add_data['taskId']=eval_json['yxh']

eval_add_url='/xg/teaching/student/teach/add'

#print(session.get(url=eval_url).text)

print(session.post(url=eval_add_url,data=add_data).text)

3、遇到的問題

到這就已經(jīng)結(jié)束了,但是在post請(qǐng)求請(qǐng)教url時(shí)我一直失敗,返回{"msg":"運(yùn)行時(shí)異常:errorparsenew","code":500},讓我困惑不已,百思不得其解。最后我用fiddler抓包,對(duì)比了一下瀏覽器post請(qǐng)求與python代碼發(fā)起的post請(qǐng)求的區(qū)別,如下圖所示:

你會(huì)發(fā)現(xiàn)瀏覽器post請(qǐng)求時(shí)'evaluationProject'對(duì)應(yīng)的value值為一個(gè)列表。而python的post請(qǐng)求時(shí),'evaluationProject'對(duì)應(yīng)多個(gè)value值,本來value應(yīng)是一個(gè)列表的,活生生的本拆散了!因?yàn)楫?dāng)時(shí)post請(qǐng)求攜帶的數(shù)據(jù)是這么寫的,如下所示:

'evaluationProject':[{"name":"老師教得怎么樣","id":"teach_situation","value":"5"},

{"name":"學(xué)習(xí)收獲怎么樣","id":"learn_harvest","value":"5"},

{"name":"紀(jì)律管理怎么樣","id":"discipline","value":"5"},

{"name":"課堂互動(dòng)怎么樣","id":"interaction","value":"5"},

{"name":"課后交流怎么樣","id":"communicat","value":"5"}],

直接讓evaluationProject與一個(gè)列表形成鍵值對(duì),找到原因之后我就想把這個(gè)列表放在字符串中,但是還是報(bào)錯(cuò)。因?yàn)槲彝?,一個(gè)字符串換行需要用續(xù)行符連接,最后改成下面那樣才算成功!

'evaluationProject':'[{"name":"老師教得怎么樣","id":"teach_situation","value":"5"},\

{"name":"學(xué)習(xí)收獲怎么樣","id":"learn_harvest","value":"5"},\

{"name":"紀(jì)律管理怎么樣","id":"discipline","value":"5"},\

{"name":"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論