四六級成績還可以這樣查?Python助你裝B一步到位!!!
- 2019 年 10 月 3 日
- 筆記
昨天有很多同學在朋友圈秀六級成績
一個個都如(sang)此(jin)優(tian)秀(liang)
當然也有悲催的哥們
對於上面這位老弟
我只能說:騷呢,兄弟
這種事都能趕上,必須點贊
一、需求分析
在刷朋友圈的時候,看到很多同學截圖不規整啊(沒錯,豬哥處女座),有些准考證號還沒打馬賽克,於是豬哥就在想能不能用Python生個四六級成績截圖出來,最好還能自動打碼,這樣豈不是可以直接發朋友圈,裝逼一步到位!(別人在秀成績,你不光可以秀成績,還可以秀Python)
二、功能設計
很多同學會模仿別人程式碼,而自己卻不知道去如何做一些小項目,其實問題就是在於:你不知從何下手!
作為開發人員在工作中都是接需求,所以自己做項目的第一步就是:搞清楚自己要做什麼(功能),然後再去量化功能,分步實現!
接下來我們就來看看今天要做一個什麼有趣的東西吧!
- 查成績:首先我們通過requests庫去學信網查詢成績
- 生成截圖:查完成績之後就直接生成截圖,截圖最好只有中獎有效資訊部分
- 打碼:對於准考證號進行打碼
三、技術實現
確定了要做的功能並量化細分完畢後,我們就可以開始敲程式碼實現了,這裡就按照之前細分的步驟一步一步實現就好了!
1.查詢四六級成績
首先我們需要找到四六級的查詢入口,這裡首選 學信網:https://www.chsi.com.cn/cet/index.jsp
然後我們調出調試窗口,輸入准考證號和姓名。記得勾選左上角的Preserve log
然後我們就可以在Network看到第一個請求就是獲取四六級結果的請求
拿到URL我們就可以開始使用requests庫模擬請求啦,非常簡單的一個post方法!
來看看返回的結果,是一個html網頁!
2.使網頁生成圖片
這裡我們會使用到一個軟體:wkhtmltopdf,注意這是一個軟體而不是python庫,我們先要安裝這個軟體!
官網下載地址:https://wkhtmltopdf.org/downloads.html ,注意這個網站下載需要打開VPN,不然下載超級慢!
豬哥事先已經把他們都下載放在百度網盤裡:wkhtmltopdf軟體下載鏈接:https://pan.baidu.com/s/11VOomkNch7C9m8lqlRaNAg 密碼:4xuv
下載後直接安裝就可!
Windwos系統同學需要注意:需要把wkhtmltopdf的bin執行文件路徑添加到PATH變數中。
Windwos系統同學需要注意:需要把wkhtmltopdf的bin執行文件路徑添加到PATH變數中。
Windwos系統同學需要注意:需要把wkhtmltopdf的bin執行文件路徑添加到PATH變數中。
軟體下載完成後我們還需要一個Python庫:imgkit
。
也許會有同學問:為什麼下載完軟體還要下庫?這兩者有什麼關係?這個庫其實相當於軟體的包裝器,簡單理解有了這個庫我們就可以直接用程式碼調用軟體,而不需要像平時那樣需要自己去打開使用軟體!
安裝庫:
pip install imgkit
將html轉化為png圖片,沒看錯就是只有一步!
imgkit.from_file(‘cet.html’, ‘cet.png’)
註:關於imgkit庫
更多使用教程請看這裡:https://pypi.org/project/imgkit/
我來看看看生成的圖片是不是正常的,下圖可以看到一個完成的網頁截圖就生成了!
用這個圖片去發朋友圈別人可能會罵你sb,截個這麼大的圖浪費別人流量!
圖片太大,我們想辦法把圖片截一下,只留下中間結果資訊!
影像處理當然要使用我們經典的pillow庫
安裝:
pip install pillow
剪切圖片三行程式碼搞定,這裡我們將截好的圖片保存為cut_cet.png
# 剪切圖片 img = Image.open('cet.png') cropped = img.crop((310, 300, 700, 700)) # (left, upper, right, lower) cropped.save("cut_cet.png")
看看截圖後的效果,這樣的圖片才是一位合格的Python裝逼工程師!
3.打碼
為什麼豬哥會想要打碼這個反男性的功能呢?原因在於豬哥這個測試帳號也是從朋友圈看到的,所以告誡大家:一定要保護好自己的隱私,你永遠不知道別人會那你的數據去幹嘛!
好了回到程式碼中來,打碼豬哥準備繼續使用我們的pillow庫
,另外還需要一個常用庫numpy庫
,這兩個庫會經常一起使用。因為圖片由許多個像素構成,而每個像素由rgb數值構成,所以就可以把一張圖片轉變為一個多維數組,所以numpy庫
就經常用到!
打碼的原理就在於將需要打碼區域的像素rgb值修改
我們來看看打碼的技術實現,豬哥將打碼的程式碼封裝為一個方法,這是通用的,你可以用在其他地方!
這裡只需要轉入馬賽克的大小和需要打碼的坐標點就可以,我們來看看最終效果!
上圖紅色部分是豬哥後來畫的,可以看到 准考證號已經被豬哥用Python畫上邪惡的馬賽克!
四、總結
今天的案例雖然簡單,但是卻讓我們看到了Python的可玩性,將技術應用於生活,裝逼就可以無處不在!
獲取源碼:關注微信公眾號「裸睡的豬」 回復: 四六級查詢