模擬登入教務系統計算GPA的小程序

零下一度
發布: 2017-05-27 14:43:54
原創
4228 人瀏覽過

  做了一些小遊戲之後開始慢慢體會敲代碼是件體力活,慢慢熬總能熬出來的。這幾天又心血來潮想寫程式模擬登入教務系統計算GPA的小程式。不過之前沒有一點點網路程式的經驗,就趁著期中考後放假4天,一點點把坑填上。
  最近對Java語言有莫名好感。原本也打算用Java開發,但事實證明Java在網路程式設計方面似乎比python麻煩,加上Java一個方法用錯導致學校教務系統誤以為我在進行SQL注入把我的ip封了(。。。)從此下定決心用python寫。

  cookie用於記錄登入後的會話狀態

# 保存cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
登入後複製

  先用瀏覽器登入教務系統,開啟控制台分析登入網頁需要post哪些訊息和找出真正的請求網頁。

模擬登入教務系統計算GPA的小程序
模擬登入教務系統計算GPA的小程序

  由上面兩圖分析得到真實的請求網頁是:121.251.19.29/pass.asp

  登入需要post的資料為:UserStyle,user,password,其中UserStyle是radio類型,看網頁原始碼得到分為student,teacher和OtherUser三種。

  接下去發送post請求。

url = '121.251.19.29/pass.asp'
h = urllib2.urlopen(url)
info = {'UserStyle': 'student', 'user': user, 'password': psw}
info = urllib.urlencode(info)
req = urllib2.Request(url, info)
urllib2.urlopen(req)
登入後複製

  成功登入後,找到成績查詢的選項點擊,找到請求的網頁為:121.251.19.29/student/asp/Select_Success.asp

模擬登入教務系統計算GPA的小程序

#開啟請求網頁,讀取成績頁面原始碼

req = urllib2.Request('121.251.19.29/student/asp/Select_Success.asp')
resData = urllib2.urlopen(req)
res = resData.read()  # 读取成绩页面
登入後複製

  用正規表示式過濾所有HTML標籤。剩下的內容進行解析。顯示成績的表格有週期性規律,提取對應科目的成績和學分,最後計算平均分數和績點。

tag = re.compile(&#39;</?[^>]*>&#39;)
s = re.sub(tag, &#39;&#39;, res)  # 过滤标签
tmp = s.split()
登入後複製

  當然,如果帳號或密碼輸入錯誤,則請求登入失敗,會提示使用者重新輸入帳號密碼。下面找了幾個同學的帳號來測試。

模擬登入教務系統計算GPA的小程序
模擬登入教務系統計算GPA的小程序
模擬登入教務系統計算GPA的小程序
模擬登入教務系統計算GPA的小程序

#  最後還稍微抖個機靈,帳號成功登陸後會把帳號密碼發到我的郵箱

  python模擬發普通文字郵件的內容就不寫了。 。直接開源吧:github.com/ly941122/CalGPA

【相關推薦】

1. PHP採集、模擬登陸論壇小程式_PHP教學

#2. 微信小程式開發之登入流程製作說明

3. 小程式開發表單驗證實例教學

4. 詳解優化你的微信小程式

以上是模擬登入教務系統計算GPA的小程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板