昨天有很多同学在朋友圈秀六级成绩
一个个都如(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

也许会有同学问:为什么下载完软件还要下库?这两者有什么关系?这个库其实相当于软件的包装器,简单理解有了这个库我们就可以直接用代码调用软件,而不需要像平时那样需要自己去打开使用软件!

安装库:

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的可玩性,将技术应用于生活,装逼就可以无处不在!

获取源码:关注微信公众号「裸睡的猪」 回复: 四六级查询

四六级成绩还可以这样查?Python助你装B一步到位!!!的更多相关文章

  1. python动态网页爬取——四六级成绩批量爬取

    需求: 四六级成绩查询网站我所知道的有两个:学信网(http://www.chsi.com.cn/cet/)和99宿舍(http://cet.99sushe.com/),这两个网站采用的都是动态网页. ...

  2. 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0

    作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...

  3. SQLite 入门教程(四)增删改查,有讲究 (转)

    转于: SQLite 入门教程(四)增删改查,有讲究 一.插入数据 INSERT INTO 表(列...) VALUES(值...) 根据前面几篇的内容,我们可以很轻送的创建一个数据表,并向其中插入一 ...

  4. 机器学习之支持向量机(四):支持向量机的Python语言实现

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  5. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

  6. 【English】【托业】【四六级】写译高频词汇

    大家都知道,四六级翻译每次考的话题不可能原句直接重复,但是,在研究了近几年的四六级真题后,我们惊奇地发现: 写译词汇在重复考! 写译词汇在重复考! 写译词汇在重复考! 因此,小编为大家整理了四六级写译 ...

  7. 只需十四步:从零开始掌握 Python 机器学习(附资源)

    分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...

  8. 只需十四步:从零开始掌握Python机器学习(附资源)

    转载:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源.你现在也在考虑从 Python 入门机器学习吗?本教程或许 ...

  9. English -有感过四六级后的托福单词表-附下载

    好像自从上学期不高不低过了六级之后就没怎么持续接触英语的东西了,欧,除了要debug的时候遇到问题了,去Google到了再用那些仅有的英语知识去看别人的文章.可能是因为看到的都是自己平时接触过的方面的 ...

随机推荐

  1. [HAOI2006]聪明的猴子 题解

    题意: 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上.猴子不会游泳,但跳跃能力比较强,它们仍然可以在 ...

  2. C语言入门2-程序设计的灵魂—算法及Raptor的应用

    一.     什么是算法(5个特性) 算法就是   解决问题的方法和步骤. 算法为解决一个具体问题而采取的确定的  有限的 执行步骤  ,仅指  计算机   能执行的算法. 算法是程序设计的灵魂和核心 ...

  3. 钉钉E应用(小程序)之日历

    唠叨几句:其实钉钉E应用的编写类似支付宝小程序(毕竟是阿里爸爸下的产业),而支付宝小程序又是chao xi 微信小程序(只不过人家是wxml / wxss ,他是 axml / acss罢了),这三者 ...

  4. Java中的I/O输入输出流概述

    流是一组有序的数据序列,根据操作类型,可以分为输入流和输出流两种,Java语言中定义的负责各种输入输出的类都被放在java.io包中.其中所有的输入流类都是抽象类InputStream(字节输入流)或 ...

  5. golang 任意类型之间相互转换

    在处理一些参数的时候,可能需要将参数转换为各种类型,这里实现一个通用的转换函数,实现各种类型之间的相互转换. 当然,如果源数据格式和目标数据类型不一致,是会返回错误的.例如将字符串“一二三”转换为数值 ...

  6. Tips 14:思维导图读书笔记法

    Tips 14:思维导图读书笔记法作读书笔记不仅能提高阅读书.文的效率,而且能提高科学研究和写作能力.读书笔记一般分为摘录.提纲.批注.心得几种,这里特别推荐思维导图式的读书笔记. 通过思维导图先大概 ...

  7. Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)

    年薪20万的梦想...         python对文件.目录能做什么?或者说我们需要python替我们做什么?最经常的操作就是对文件的:打开.关闭.读取.写入.修改.保存等等对目录的操作,无非就是 ...

  8. 机器学习经典分类算法 —— k-均值算法(附python实现代码及数据集)

    目录 工作原理 python实现 算法实战 对mnist数据集进行聚类 小结 附录 工作原理 聚类是一种无监督的学习,它将相似的对象归到同一个簇中.类似于全自动分类(自动的意思是连类别都是自动构建的) ...

  9. 【iOS】copy 关键字

    以前没注意过 iOS 的 copy, nonatomic, assign, weak, strong 等关键字. 偏偏今天遇到了一个问题,恰恰是关键字的问题,如图: 之前用的是 assign, 没有用 ...

  10. ASP.NET Core on K8S深入学习(2)部署过程解析与Dashboard

    上一篇<K8S集群部署>中搭建好了一个最小化的K8S集群,这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一下整个部署过程的运行机制,然后部署一下Dashboard,完 ...