def login(self): """ 輸入帳號密碼登入學生請假紀錄系統。 :return: 登入後的網頁 respond 物件。 """ # 先開啟起始網頁取得初始cookies取得權限 pre_web = self.rs.get(self.pre_url, headers=self.nor_headers, verify=False) # 用 fiddler 驗證不會過,所以要關閉 pre_cookies = requests.utils.dict_from_cookiejar(self.rs.cookies) # 登入學校系統 login_web = self.rs.post(self.login_url, headers=self.nor_headers, data=self.login_data) login_cookies = requests.utils.dict_from_cookiejar(self.rs.cookies) remove_cookie_by_name( self.rs.cookies, 'PHPSESSID') # 不知道 cookie 多了不必要的PHPSESSID會不會怎樣,先刪除好了 # 檢查登入有沒有失敗 if login_web.url != r'https://my.ntu.edu.tw/stuLeaveManagement/SignList_teacher.aspx': raise LoginError('登入失敗!!!') return login_web
def remove_cookies(self, cookies: List[Dict[str, str]]): for cookie in cookies: remove_cookie_by_name( self.cookie_jar, cookie['name'], domain=cookie.get('domain', None), path=cookie.get('path', None) )
"ctl00$ContentPlaceHolder1$GVapprovedList$ctl11$HiddenField2": "003+10220", "ctl00$ContentPlaceHolder1$GVapprovedList$ctl13$PageDropDownList": "第2頁" } # 開始瀏覽網頁囉 if __name__ == "__main__": rs = requests.Session() # 先開啟起始網頁取得初始cookies取得權限 pre_web = rs.get(pre_url, headers=headers, verify=False) pre_cookies = requests.utils.dict_from_cookiejar(rs.cookies) # 登入學校系統 login_web = rs.post(login_url, headers=headers, data=login_data) login_cookies = requests.utils.dict_from_cookiejar(rs.cookies) remove_cookie_by_name(rs.cookies, 'PHPSESSID') # 不知道 cookie 多了不必要的PHPSESSID會不會怎樣,先刪除好了 # 直接從這邊要開始查詢了 # 進入學生請假紀錄系統 search_web = rs.get(search_url, headers=headers) search_cookies = requests.utils.dict_from_cookiejar(rs.cookies) # 開始輸入查詢條件查詢了 ## 要先搞定 aspx 的動態驗證參數,把參數送到查詢表單裡 selector_eventval = etree.HTML(search_web.text) search_data["__EVENTVALIDATION"] = selector_eventval.xpath( r'//*[@id="__EVENTVALIDATION"]/@value')[0] search_data["__VIEWSTATE"] = selector_eventval.xpath( r'//*[@id="__VIEWSTATE"]/@value')[0]
def __delitem__(self, name): remove_cookie_by_name(self, name)
def __setitem__(self, name, value): if value is None: remove_cookie_by_name(self, name) else: self.set_cookie(create_cookie(name, value))