四六級成績還可以這樣查?Python助你裝B一步到位!!!

看到有很多同學在朋友圈秀六級成績
一個個都如(sang)此(jin)優(tian)秀(liang)
在這裏插入圖片描述
當然也有悲催的哥們
在這裏插入圖片描述
對於上面這位老弟
我只能說:騷呢,兄弟

一、需求分析
在刷朋友圈的時候,看到很多同學截圖不規整啊,有些准考證號還沒打馬賽克,於是就在想能不能用Python生個四六級成績截圖出來,最好還能自動打碼,這樣豈不是可以直接發朋友圈,裝逼一步到位!(別人在秀成績,你不光可以秀成績,還可以秀Python)

二、功能設計
很多同學會模仿別人代碼,而自己卻不知道去如何做一些小項目,其實問題就是在於:你不知從何下手!

作爲開發人員在工作中都是接需求,所以自己做項目的第一步就是:搞清楚自己要做什麼(功能),然後再去量化功能,分步實現!

接下來我們就來看看今天要做一個什麼有趣的東西吧!

  1. 查成績:首先我們通過requests庫去學信網查詢成績
  2. 生成截圖:查完成績之後就直接生成截圖,截圖最好只有中獎有效信息部分
  3. 打碼:對於准考證號進行打碼
    三、技術實現
    確定了要做的功能並量化細分完畢後,我們就可以開始敲代碼實現了,這裏就按照之前細分的步驟一步一步實現就好了!

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

也許會有同學問:爲什麼下載完軟件還要下庫?這兩者有什麼關係?這個庫其實相當於軟件的包裝器,簡單理解有了這個庫我們就可以直接用代碼調用軟件,而不需要像平時那樣需要自己去打開使用軟件!

安裝庫:

如果你對python感興趣,我這有個學習Python基地,裏面有很多學習資料,感興趣的+Q羣:688244617

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畫上邪惡的馬賽克!

你學會了嘛?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章