承接前文关于Python自动搜题的介绍 https:// zhuanlan.zhihu.com/p/32 828411 ,此篇面向新手小白进行解析,助你成功运行自动搜题的python程序。

A部分是介绍思路,可以先跳到B部分去下载包,装中文包时耗时蛮长,可以再来细看A部分~

A 思路:如前文所述,代码大致分三步。

1. 获取手机直播答题界面截图

注意:我们这里只关注题目,不管选项,通过搜索题目内容获取辅助线索,所以截图我们只定位在显示题目的位置就足够了,这样图片中读取文字的速度快精度也高一些,例如中午1点直播答题测试时截图第六题:

2. 读取截图中的题目文字内容

这里我们在shell处将读取到的题目内容输出展示,同时也显示代码耗时:

3. 打开浏览器执行对题目搜索

单论每一步,实现方法有很多,但考虑到时间,我们只选取耗时尽量少的方法来实现各部分功能。经过1月11日中午1点百万英雄直播答题时的测试,网络良好时,搜完结果剩余答题时间仍有5秒,完全达到预期效果(但由于中午醉心于搜索、录影,忘了答题了,一心不可二用啊T.T)

B 下载相关功能包:由于我也算是刚入门的新手,基本各种功能模块都是按着搜来的网上教程来的,所以大家只要能保证各个模块都配好,最终程序跑通还是不难的。

执行代码时,我用的是Windows10系统电脑,Python3.6,安卓手机数据线连电脑。

1. 无论什么手机、电脑系统,要做的是实现把手机屏幕内容实时显示在电脑屏幕上,我是用的360手机助手的'演示'功能完成了对安卓和windows的连接,其余型号手机电脑可以自己搜一下来解决。

2. 接下来我们通过电脑截屏来实现截取屏幕上手机直播内容,由于Windows API获取截图的耗时极少,我们选择了它。这里win10是不用额外下载东西,但可能Win7或其它版本的Windows会遇到找不到win32gui情况,可以参考 win7下安装python库的若干问题 - CSDN博客 来解决。关于windows通过python截屏函数,参考 Python实现屏幕截图的两种方式 - weiyinfu - 博客园

3. 拿到题目的截图后,要完成对题目中文字的读取,就需要安装PIL和pytesseract,同时还需要简体中文识别的引擎包tesseract-ocr,相关安装检测参考链接: Python人工智能之图片识别,Python3一行代码实现图片文字识别 - 邱石的专栏 - CSDN博客 注意:安装引擎包时最好按照链接中保存到C盘相似的路径,我和朋友安到E盘都有报错,也没搞清具体原因,把文件剪切到C盘就解决了。

4. 打开浏览器的时webbrowser模块,自带不用下载。

C 接下来是校准工作,调整代码中w,h值来改变截图大小,(20,140)处的两个值改变截图初始位置坐标,对应着你个人手机屏幕在电脑屏幕中的显示位置,调整以上的值使截图恰好落在手机屏上直播时显示题目的位置。

D 代码解析

def window_capture(filename):

hwnd = 0

hwndDC = win32gui.GetWindowDC(hwnd)

mfcDC = win32ui.CreateDCFromHandle(hwndDC)

saveDC = mfcDC.CreateCompatibleDC()

saveBitMap = win32ui.CreateBitmap()

MoniterDev = win32api.EnumDisplayMonitors(None,None)

#下面的#w=...和#h=...都是链接中源代码对其赋值,获取的是电脑截屏的宽和高

#w = MoniterDev[0][2][2]

#h = MoniterDev[0][2][3]

#我针对自己手机的屏幕大小以及显示题目的位置重新对其设置

w = 380

h = 150

saveBitMap.CreateCompatibleBitmap(mfcDC,w,h)

saveDC.SelectObject(saveBitMap)

#here的正下方(20,140)是截图的起点坐标来定位截图位置,这些根据个人情况调整

#--------------------------------here--------------------

saveDC.BitBlt((0,0),(w,h),mfcDC,(20,140),win32con.SRCCOPY)

saveBitMap.SaveBitmapFile(saveDC,filename)

#获取开始执行代码的时间

start = time.time()

#获取截图为'haha.jpg'

window_capture('haha.jpg')

#识别截图中的简体中文

text=pytesseract.image_to_string(Image.open('haha.jpg'),lang='chi_sim')

#识别的字符串是'你 好 吗'带空格的格式,这里去除这些空格生成新的字符串list即题目内容

new_text =''.join(text.split())

print(new_text)

#将题目内容作为搜索关键词加到百度搜索的网址

url = 'http://www.baidu.com/s?wd=%s' % new_text

#打开浏览器获取搜索结果

webbrowser.open(url)

#获取代码结束时的时间

end = time.time()

#计算代码执行时间,搜索结果出现的时间还要取决于网络状况。。。

print(end-start)

E 直播答题实测:

希望当你看到这里时,能够成功运行代码咯~ 有问题可以留言,或者关注公众号TEDxPY留言,希望能认识更多喜欢Python的朋友~!

补充:

1.本代码只是简化百度搜索题目的过程,美其名自动搜题,只作答题参考,有优化的想法欢迎来建议。

2.代码运行后,文件夹中会生成截图图片,可以根据图片内容去调整代码中关于截图位置、大小的设置,百万英雄的题目是白底黑字,只要截图准确,一般精确度都很高的。

python自动答题软件_直播答题?Python助你自动搜题之新手篇!相关推荐

  1. python自动答题免费_直播答题?Python助你自动搜题之新手篇!

    承接前文关于Python自动搜题的介绍https://zhuanlan.zhihu.com/p/32828411,此篇面向新手小白进行解析,助你成功运行自动搜题的python程序. A部分是介绍思路, ...

  2. python怎么开发软件_怎么使用python进行软件开发

    一.下载pyinstaller 我使用的版本为PyInstaller-2.1,支持python版本2.3-2.7,点击这里下载. 二.安装pyinstaller 下载完成后,解压即可.我的解压目录为D ...

  3. python自动投注软件_能帮我开发一个自动投注的脚本吗?

    python写的自动投注脚本(SSC) #coding:utf-8 import time from selenium import webdriver from selenium.webdriver ...

  4. 如何制作python检查小软件_如何用Python制作整蛊小程序

    原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...

  5. python用法查询软件_如何使用Python应用软件实现车牌检测和识别

    1.车牌检测和识别项目介绍 车牌的检测和识别的应用非常广泛,比如交通违章车牌追踪,小区或地下车库门禁.在对车牌识别和检测的过程中,因为车牌往往是规整的矩形,长宽比相对固定,色调纹理相对固定,常用的方法 ...

  6. python对话机器人软件_如何用Python为聊天机器人创建对话?

    我想写一个快速简单的聊天机器人,可以携带与用户的对话.我想知道如何创建对话,允许无限量的输入和响应.现在我使用的代码不允许用户定义输入.这就是我现在正在使用的代码.在# Import the rand ...

  7. python程序设计搜题软件_智慧职教APPPython程序设计基础答案搜题公众号

    智慧职教APPPython程序设计基础答案搜题公众号 更多相关问题 暑淫证与火热证的共同点是A.都有明显的季节性B.脉数有力C.发热神昏D.舌红绛 每种生物都是有自己特有的一套遗传密码.() 患者,女 ...

  8. 如何用python做计算软件_如何用Python写一个计算器软件 附带效果图

    1 import tkinter #导入tkinter模块 2 3 root =tkinter.Tk()4 root.minsize(280,500)5 root.title('李蛟龙的计算器')6 ...

  9. python搜题手机软件_智慧职教APPPython程序设计基础答案搜题公众号

    [判断题] 古罗马哲学家西塞罗于公元75年寻找到了阿基米德的坟墓. [名词解释] 天元术 [判断题] 18世纪欧洲主流学术观点不承认负数为数. [问答题] 简述解析几何的产生. [判断题] 为了讲解锐 ...

最新文章

  1. 不同交换机不通过trunk在vlan间通信
  2. 985女研究生连算法都不会,还面试什么大厂!
  3. ubuntu环境下一键切换python的virtualenv虚拟环境
  4. 通讯录数据表设计v0.5
  5. 模式窗口(Modal Dialog) 导致 Session丢失的解决办法
  6. 基于C语言的图形化编程软件,图形化编程工具
  7. erp服务器慢_ERP系统服务器维护经验谈
  8. 自动驾驶车辆仿真模拟软件盘点
  9. 《那些年啊,那些事——一个程序员的奋斗史》七
  10. 【Ubuntu】 解决中文输入问题 --- 安装搜狗拼音输入法
  11. 基于 SpringBoot 的个人博客系统设计与实现(含论文与程序代码).rar
  12. php获取客户端真实ip
  13. 扒一扒苹果的那些事儿—春节见闻随想
  14. RTK ? PPK ?到底该选啥
  15. 每个前端都值得拥有自己的组件库,就像每个冬天都拥有春秋裤
  16. java大数类阶乘_Java中的大数阶乘
  17. JavaScript中的多种进制与进制转换
  18. 陈年:追随PPG 直销衬衫拒绝烧钱
  19. Ubuntu中安装edb1.3.0
  20. verilog真值表

热门文章

  1. 二元固定信道(BSC)信道的MATLAB实现
  2. 双飞翼 html 布局,css实现双飞翼布局的四种方法(附代码)
  3. DHCP option 43是什么?
  4. vue实现tabs侧边导航栏点击内容跳转到对应位置,且内容滚动导航栏切换,封装直接用
  5. Android 蓝牙 HFP 和 A2DP
  6. 更改Windows系统下的MessageBox按钮显示内容
  7. 【调剂】调剂:机械、土木、计算机等工科男改变命运从选择正确方向开始!辽宁工程技术大学...
  8. 什么时候买保险最好?
  9. CACHE数据库m语言表的创建
  10. python contains_python-如何限制str.contains的结果?