Golang實現正方教務系統爬蟲 二

2021-08-09 22:58:19 字數 1225 閱讀 5975

上次我們已經登入進了首頁,明白了爬蟲的原理,這次我們看一下web介面是如何實現的.

專案位址

程式目前的功能很簡單一共四個函式.welcone處理登入請求,querycredit處理學分查詢,querygrade處理成績查詢.

welcome函式中判斷請求方式,get請求則返回login介面,post請求處理登入返回welcome介面.

welcome介面做了一些處理,第一為了兩個按鈕提交到不同的處理函式,這裡提交是用js實現的,第二這裡用了兩個hidden標籤記錄姓名和學號,直接post給查詢函式,因為後面查詢的url需要用這兩個引數進行拼接,這樣服務端無需對使用者資訊作儲存.

這裡重點說一下cookie策略

對每乙個使用者,我們要保證他每次提交到教務系統的cookie都一樣,我一開始的思路是向獲取教務系統的cookie,再生成使用者cookie將兩個cookie關聯,後來發現其實可以直接將教務系統的cookie直接給使用者作為使用者cookie,這樣服務端什麼都不用存.

之後的查詢就和之前一樣了,拼接查詢的url位址,post請求.這裡我們如何從返回的html裡提取我們需要的資訊呢?一種思路是正則,我覺得太麻煩.這裡我們用乙個goquery庫

doc := decoder.newreader(response.body)

result, _ := goquery.newdocumentfromreader(doc)

view, _ := result.find("#__viewstate").attr("value")

event, _ := result.find("#__eventvalidation").attr("value")

直接獲取dom節點的值,很方便.

爬取正方教務系統課程表

被乙個學長布置下的任務 有些地方可能不夠完整 思路 首先你需要完成登入操作 1 首先根據教務系統 的審查元素,發現了乙個驗證碼的 其中 xh 是 學號 xm 是學生姓名的url編碼 gnmkdm是課程表頁面的 這些資訊是獲得課表頁面的學生資訊,會顯示出你是 的學生,學號是什麼,專業是什麼等等之類的 ...

Android實現正方形View

我們在開發的時候,是不是有這樣的需求呢?1.layout是個正方形 2.view是個正方形 我們下面就以具體的情景來做一次簡單的開發來滿足我們的需求 建立乙個relativelayout,滿足高度等於寬度,寬度是填充父容器,這樣來滿足我們不論在何種螢幕尺寸下面,都能很好的適配,下面貼 我們先自定義乙...

教務系統自動評教 韓師正方教務管理系統自動評教

自己改了乙個指令碼,可以實現同一門課有兩個老師需要評課的情況。使用方法 進入第一門評課介面,f12調出控制台,在console下貼上下面這段js 回車即可執行 var iframe window.top.document.getelementbyid iframeautoheight var ifd...