還記得之前的三顧一卡通餘額查詢的文章嘛?
三顧一卡通餘額查詢
按照文章裡的方法,我們在多次努力下終於登錄上校園網,查到了自己學生卡中的餘額。
可是,這一切要經過多少步呢?我們來細數一下:
連接到校園網
來到一卡通查詢網站
由於網站兼容性問題,要根據給出密碼鍵盤輸入相應密碼(手機上操作基本是不能的,只能通過電腦來查詢)
輸入一個難以識別的驗證碼
登錄
選擇菜單,查詢到餘額
如果忘記自己還有多少餘額,想去查一下的話,按照上面的操作,還不去餐廳刷一下卡方便實在。
這時候愛動腦筋的大猿,通過結合在課堂上學到的知識,想出來一個好的方法,去便捷的查詢一卡通餘額,這個方法就是 —— 爬蟲 。
什麼是爬蟲呢?
爬蟲是通過是一種按照一定的規則,自動地抓取網上信息的程序或者腳本
—— 百度百科
通俗來說爬蟲就是通過寫一個程序,模擬人去瀏覽網站,爬去到相關的數據並且反饋回來。對於python來說3行代碼就是一個基本的爬蟲
import requestsresp = requests.get('http://www.intyut.cn')print(resp.text)
只需要上面的幾行代碼,你就能看到在太理網站的網頁源碼啦。
如果要深入的話你肯能需要:html協議, requests庫,beautifulsoup4庫 和 正則表達式 不然你的爬蟲可能寸步難行。
爬蟲的用途?關於爬蟲的用途,其實百度蜘蛛就是一個巨大的爬蟲,大家百度到的東西都是它一個個網站爬取到的結果。類似還有攜程上訂火車票,簡單來說就是通過爬蟲代替人去12306購票,至於加速包,就是給爬蟲設置一個訪問頻率去看網上還有沒有票,當然還涉及很多複雜的東西 (PS:大猿很敬佩攜程的技術,能做到那樣真的超級厲害,在這裡舉例是為了大家便於理解,並無貶低之意)
大 BOSS 驗證碼當然用爬蟲也遇到了一個問題 —— 驗證碼。
驗證碼(CAPTCHA),全稱為全自動區分計算機與人類的公開圖靈測試。
——來自維基百科
看著全稱是不是很高大上?以後還可以和別人開玩笑說剛剛參加了一個圖靈測試!而驗證碼的目的就是為了防止爬蟲,防止惡意爬蟲對網站資源的消耗。猶如一個大 BOSS (遊戲關卡有難度的怪物),阻礙著我們爬蟲的去路。
而學校一卡通網站給出的驗證碼是下面這個,計算十位數內的加減法,看著這個扭曲的字體,對人來說可能都可能寫錯,更別說程序了。
但是! 愛動腦筋的大猿,結合課堂上所學到的知識,想到可以用 卷積神經網絡(CNN) 來訓練一個模型去識別驗證碼。
那麼什麼是卷積神經網絡呢?我們來看下維基百科的定義
大家不要被解釋嚇到了,其實這裡面主要涉及到就是高數裡面偏微分/梯度相關的知識,所以大家千萬不要望而卻步,想學習的話推薦課程有吳恩達老師和李宏毅老師的課程~
了解了理論之後,我們可以用 Tensorflow 這個由谷歌開源的數值計算庫,去做一個神經網絡。
通過使用tensorflow,我們的核心代碼只要幾十行,就可以搭好一個卷積模型,去識別驗證碼。之後收集數據、調參、訓練之後模型終於有了一個較好的準確率,然後我們就可以使用了,不過在這裡本文就不深入談論啦。
通過訓練,我們可愛的小爬蟲就獲得了識別驗證碼的能力,它就能登錄到學校的一卡通網站,去幫助大家查詢一卡通餘額。並且大家大可放心隱私問題,我們並不會保存任何餘額信息。下面是一卡通查詢結果
不過大猿發現網站性能方面會有一些問題,比如充了錢過一會才會顯示出來,或者是歷史查詢如果太久之前的話會很慢,還有可能查詢失敗。所以做了一定的限制:在歷史查詢只能查詢近一個月的,但是實際上校園卡網站支持查詢很久以前的消費記錄的。