本文為大家分享了python實現圖書館研習室自動預約的具體代碼,供大家參考,具體內容如下
簡介
現在好多學校為學生提供了非常良好的學習環境,通常體現在自習教室的設施設備上。對此不得不提一句的就是我們學校的圖書館,隨著新圖書館的修建,館內也設置了多個功能區,每層分為A、B、C、D四個區域,由南北連廊相連,中間由旋轉樓梯貫通一至五層。A區為自修區;B區和C區為藏閱一體的社會科學和自然科學書庫;D區為專項功能區,包含影視廳、數字媒體創客體驗中心、智慧培訓教室、云桌面電子閱覽室等;B、C區東西連廊設有大小十二間研習室;南北連廊設有休閑閱讀區。
上面那段我是從圖書館官網上抄的,不過真的得為學校的圖書館點個贊。回歸本篇文章正題,學校免費為廣大師生提供了舒適優良設備齊全的研習室。但是這些研習室是需要進行網上預約才能夠進入使用,每天的00:00開啟下一天的預約,因此要想約到一個時間段(3小時)的研習室,可謂得“挑燈夜戰”。當然,在這個過程中手速快將有巨大的優勢。如果晚上休息的早,手速又不快,基本上就別想預約到研習室了。剛剛好最近學了一點python爬蟲,就打算用爬蟲幫我完成這個艱巨的任務了。哈哈哈哈!(ps:防止惡意訪問,所有鏈接就不放了哈)
python實現思路
想想思路還是挺簡單的,無非就是登錄賬號、查找房間、提交預約。那就讓我們試試看:
登錄賬號
首先打開我們研習室預約的登錄界面,鏈接為:U2FsdGVkX19NdfJkghN54Msvy1zl7AucRur/ct0nz4orPI7uLkSDsvuFMgr0fGcO
rn9Z/f8h3bds9w==

好吧,這第一步登錄賬號就非常考驗我這個新手了,不過不能慫。通過參考其他一些大佬使用的方法,就是打開firefox的firebug(ctrl+shift+e)查看網絡情況,在這個情況下進行一次正常的登錄。

可以看到我們這里有個post,到時便可以使用python中requests.post方法。

為了能夠成功的登錄,要隱藏自己是個爬蟲的身份,在消息頭中,可以看到我們的請求頭,只要將參數都復制過來,組成自己的headers = {…}來欺騙服務器。

看一下參數這一頁,這里的表單數據只有三個,分別對應著驗證碼、賬號和密碼。將這里的參數復制過來,就可以組成我們的data = {…}。其中需要我們的注意的就是這個驗證碼,無論是人工“自”能識別,還是機器自動識別,都需要將驗證碼保存為本地文件。如此一來,就有了一個問題,每訪問一次服務器,驗證碼就會變換。現在讓我們好好捋捋思路,首先我們得獲得驗證碼并將其保存在本地,這就需要訪問一次服務器,最后我們要提交我們的參數進行登錄,這又再一次訪問了服務器,這次的驗證碼和我們獲取的驗證碼已經不是同一個驗證碼了。在剛剛開始的嘗試中我無論如何無法登錄服務器,就是兩次的驗證碼不匹配。如何實現第一次獲取的驗證碼和提交時的驗證碼相一致呢?
新聞熱點
疑難解答