被乙個學長布置下的任務…有些地方可能不夠完整…
思路: 首先你需要完成登入操作:
(1) 首先根據教務系統**的審查元素, 發現了乙個驗證碼的**:
其中 xh 是 學號 , xm 是學生姓名的url編碼 , gnmkdm是課程表頁面的**
這些資訊是獲得課表頁面的學生資訊,會顯示出你是**的學生,學號是什麼,專業是什麼等等之類的
這些東西我們需要想辦法獲得,也就是說,只有得到了這些資訊,我們才能方便向課表頁面傳送post請求
那麼應該怎麼獲得?
(1) 先傳送乙個get請求 "+ user_name+ "&gnmkdm=n121603
(2) 然後運用bs4庫去提取http網頁中的學生資訊(參考**)
(3)得到後向課表頁面傳送post請求(哪一年第幾學期)
(4) 然後便得到了我們的課程表頁面, 接下來就可以進行資訊提取了
其實只要登入進去了,裡面的成績,課表,選課什麼的都是可以以一種模擬人的辦法進行操作
import requests
from bs4 import beautifulsoup
session = none
checkcodepath = './code.png' #驗證碼儲存路徑
res = requests.session()
origin_url = "" # 教務系統**
url = ""
checkcodeurl = origin_url+'checkcode.aspx' #驗證碼**
head =
post_data =
def get_photo(url):
checkcode = res.get(checkcodeurl, headers=head)
with open(checkcodepath, 'wb') as fp: #儲存驗證碼
fp.write(checkcode.content)
post_data['txtsecretcode'] = input("請輸入中的驗證碼: (驗證碼儲存在同級資料夾)")
def login():
user_name = input("請輸入您的學號:")
user_password = input("請輸入您的密碼:")
post_data["txtusername"] = user_name
post_data["textbox2"]= user_password
login_page_url = origin_url + "default2.aspx"
head['referer'] = login_page_url
get_photo(url)
homepage = res.post(login_page_url, data=post_data, headers=head) #在這裡得到了主頁面
with open('text1.html','w' , encoding = 'gb2312') as f :
f.write(homepage.text)
#更改資料
#head["referer"]="default2.aspx"
exit_sys = "what should i do "
url = ""+ user_name+ "&gnmkdm=n121603"
#url = "1717000113&xm=%d6%a3%bc%ce%f3%de&gnmkdm=n121603
head["referer"]= url
page_home = res.get(url , headers = head)
post_data["__viewstate"] = beautifulsoup(page_home.text, 'html.parser').find_all('input')[2].get('value')
#xm = beautifulsoup(res.get(url , headers = head).text, 'html.parser').find_all('form')[0].get('action')
post_data["__eventtarget"] = "xqd"
while exit_sys != "q":
query_years = input("請輸入您要查詢課表的年份:(2017-2018)")
query_how = input("請輸入您要查詢第幾學期的課表:")
#url = "" + xm
#print(url)
post_data["xnd"]= query_years
post_data["xqd"]=query_how
learning = res.post(url , data = post_data , headers = head)
print(url)
if query_years == "2018-2019" and query_how == "1" :
with open( query_years + '-'+ query_how + '.html' ,'w' , encoding = "gb2312") as f :
f.write(page_home.text)
else :
with open( query_years + '-'+ query_how + '.html' ,'w' , encoding = "gb2312" , errors = "ignore") as f :
f.write( learning.text)
print("您的課表已經儲存為html的形式!")
print("按q退出 按c繼續")
while 1 :
exit_sys = input()
if exit_sys == "c" or exit_sys == 'q' :
break
else:
print("無效操作!")
return learning
def class_table(table_html):
pass
def main():
res = login()
class_table(res)
if __name__ == "__main__":
main()
爬取武漢大學教務系統資料
coding utf 8 author zy import urllib2 import cookielib import urllib import requests import re import sys 模擬登入 captchaurl posturl 驗證碼位址和post位址 將cookie...
模擬登入學校教務網 獲取課程表資訊
最終效果 第一步 使用 httpwatch 對教務網抓包 使用volley框架和httpurlconnection 獲取課程表資訊 獲取cookie 之前自己在寫模擬登入學校教務網資訊的時候,找了一下部落格上的前輩們的文章。很多文章上寫的cookie是在post登入訊息的時候伺服器返回的,可是根據我...
如何實現乙個簡單教務系統的課程表查詢
1.首先做好課程表靜態頁面 可用sublime,dreawvear等開發工具編寫,本人用sublime編寫,稍後附上 課程表效果圖 1.實現select下拉列表的二級聯動 何為select二級聯動 當我在第乙個下拉列表選中乙個固定的選項之後,第二個下拉列表自動填充相對應選項 2.實現不同院 系部 不...