爬取正方教務系統課程表

2021-09-30 19:45:13 字數 3141 閱讀 7349

被乙個學長布置下的任務…有些地方可能不夠完整…

思路: 首先你需要完成登入操作:

(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.實現不同院 系部 不...