日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 爬虫 教务系统模拟登陆 并下载课表

發布時間:2023/12/29 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 爬虫 教务系统模拟登陆 并下载课表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

改進于http://blog.csdn.net/sbw6788778/article/details/50799603

一、使用requests模塊,通過POST提交表單的形式登陸
1、登陸南郵智慧校園,使用谷歌瀏覽器等工具進行抓包,查看提交給服務器的請求地址和表單信息


其中username password 為賬號密碼, lt 為動態變化的參數,這個參數是從登陸的頁面獲得的,在頁面中的源碼中如下


execution參數是執行的次數,每次訪問這個頁面時,e后面的計數會加一,不過設置成固定的值好像是沒有影響的,其他兩個參數是固定的。
登陸后,要保持登陸狀態,使用requests.Session()的方法保持登陸的cookie

2、下載課表
點擊打開或保存為EXCEL文件,發現保持下來的是.jsp的文件

發現瀏覽器向這個url發出了post

提交的表單是

知道表單的信息后,就可以自己構造表單來提交,并保存下來
完整代碼如下

# coding:utf-8 import requests import re#登陸地址 url_login = 'http://ids6.njupt.edu.cn/authserver/login? service=http://my.njupt.edu.cn/login.do'#登陸表單提交的地址 login_post = 'http://ids6.njupt.edu.cn/authserver/login?service=http%3A%2F%2Fyjs.njupt.edu.cn%2Fepstar%2Fweb%2Fswms%2Fmainframe%2Fhome.jsp'# 保持登陸狀態的cookie z = requests.Session() z.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' }#----------------------構造登陸表單---------- s = z.get(url_login) html = s.text pattern_lt = r'name="lt" value="(.*?)"' lt = re.findall(pattern_lt, html) # 使用正則表達式匹配 print lt login_data = {'username': '學號','password': '密碼','lt':lt,'dllt':'userNamePasswordLogin','execution':'e1s1','_eventId':'submit','rmShown':'1' }#-------------提交登陸表單-------------------- s1 = z.post(url=login_post, data=login_data)# ----------------檢測是否登陸成功-------------- # 登陸成功后顯示的網址是http://my.njupt.edu.cn/index.do s2 = z.get(url_login) print s2.url #---------------------請求課表信息,并保存----------------- # 請求課表post的地址 course_post = 'http://yjs.njupt.edu.cn/epstar/yjs/T_PYGL_KWGL_WSXK/T_PYGL_KWGL_WSXK_XSKB_NEW.jsp?&current.model.id=aa5u2-5qit61-ga0dny4n-1-gb0irwbr-ffc' #表單數據 request_data = {'excel':'true','XQDM':'31','XH':'學號' }# 保存返回的數據 req = z.post(url=course_post, data=request_data, stream=True) with open('test3.jsp', 'w') as f:f.write(req.content)

總結

以上是生活随笔為你收集整理的python 爬虫 教务系统模拟登陆 并下载课表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。