预备软件(这几个都百度一下,攻略多,不难):
1.intellij idea下载
2.python下载
3.requests、AIP 、PIL安装
4.adb下载(用于手机截图)

https://www.lfd.uci.edu/~gohlke/pythonlibs/
这个网址有很多python可以直接下载的

首先将整个过程分为几步:

  1. 手机截图:通过adb进行手机截图,保存到手机里,然后取出来放到电脑里。
    (用的是os.system函数,需要import os,开始用的各种方式都说图片格式不对,就找到了这种 方法,两步搞定,毕竟新手)
    os.system('adb shell screencap -p /sdcard/image.png')os.system('adb pull /sdcard/image.png')
  1. 图片预处理:保存的图片需要进行裁剪,使用img.crop()函数操作,里面的4个参数分别是图片的左上和右下(一个坐标是两个参数)。如果题目和答案在一起,中间没有任何其他汉字,就只需进行一次裁剪即可拿去文字识别,如果中间有汉字,就将题目和答案分布裁剪下来,剩下可以选择将题目和答案分开进行文字识别,或者将题目和答案拼接在一张图上,我选的方法是后者。首先创建一个空图片,然后用paste函数将题目和答案粘贴上去,合成一张,识别一次即可。
    裁剪需要根据位置,自己试几次,我这个是找的VX里面 头脑王者做得试验。

  2. 文字识别:使用的OCR,百度一下‘百度AI’,进入官网,右上角有个控制台,点击文字识别,自己创建一个项目,记录下面代码所需的三个参数即可.(我建了一个项目后,第二天就有人打电话过来问我是不是在百度上使用了智能工具,吓我一跳,还以为咋了,最后知道是来推销的不用管)

  # 文字识别APP_ID = '16227766'API_KEY = 'FgubvnxtReF32vR4jGsS4FY4'SECRET_KEY = 'R5YbhWyY2NMF102wRZTwVm9U4hjeAwQG'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)i = open(r'D:\dati\new_img_fb.png', 'rb')img = i.read()img_res = client.basicGeneral(img)return img_res
  1. 百度:使用requests进行访问。
    url就是百度的网址,headers应该都差不多,可以自己找(毕竟自己找到的才有满足感),打开一个网页,按F12,再按F5,如下图,随便点一个进去找headers就可以了,最后params参数就是你要百度的内容。enconding函数是将html上的乱码转化成中文。
    # 进行百度url = 'https://www.baidu.com/s'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}data = {'wd': question}res = requests.get(url=url, params=data, headers=headers)res.encoding = 'utf-8'html = res.text
  1. 找答案:文字识别函数是一行一行识别的,如果题目有两行,就需要处理一下,将两行合到一行进行百度,写代码的时候多加几个print函数看看就知道了。
        answers = [x['words'] for x in info['words_result'][-4:]]question = ''.join([x['words'] for x in info['words_result'][:-4]])resy = baidu(question, answers)print(resy)

使用的答题判定比较简单,就是通过百度你的问题,然后在该网页上找到4个答案中,出现频率最高的答案,然后进行排序,第一个答案就是正确答案(感觉这种方式,答案正确率不是很高,一旦问的是以下哪个不是,必定出错)

整个过程说起来很简单,但毕竟刚开始学python,很多不明就里,自己好多地方出错过,自己百度后一个一个函数验证的。

整个代码贴在下面(新手写代码,不喜欢写注释,见谅):

import requests
import os
from PIL import Image
from aip import AipOcrdef get_screenshot():# 截屏os.system('adb shell screencap -p /sdcard/image.png')os.system('adb pull /sdcard/image.png')def get_word_by_img():# 文字识别APP_ID = '16227766'API_KEY = 'FgubvnxtReF32vR4jGsS4FY4'SECRET_KEY = 'R5YbhWyY2NMF102wRZTwVm9U4hjeAwQG'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)i = open(r'D:\dati\new_img_fb.png', 'rb')img = i.read()img_res = client.basicGeneral(img)return img_resdef baidu(question, answers):# 进行百度url = 'https://www.baidu.com/s'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}data = {'wd': question}res = requests.get(url=url, params=data, headers=headers)res.encoding = 'utf-8'html = res.textfor i in range(len(answers)):answers[i] = (html.count(answers[i]), answers[i], i)answers.sort(reverse=True)return answersdef run():while True:input("回车答题")get_screenshot()img = Image.open('D:\dati\image.png')title_img = img.crop((80, 500, 1000, 880))answers_img = img.crop((80, 960, 1000, 1720))new_img = Image.new('RGBA', (920, 1140))new_img.paste(title_img, (0, 0, 920, 380))new_img.paste(answers_img, (0, 380, 920, 1140))new_img.save('new_img_fb.png')info = get_word_by_img()answers = [x['words'] for x in info['words_result'][-4:]]question = ''.join([x['words'] for x in info['words_result'][:-4]])resy = baidu(question, answers)print(resy)if __name__ == '__main__':run()

然后试验一下:
先找个图:
程序结果是:

E:\新建文件夹\python.exe D:/dati/main.py
回车答题
[ 11%] /sdcard/image.png
[ 23%] /sdcard/image.png
[ 35%] /sdcard/image.png
[ 47%] /sdcard/image.png
[ 59%] /sdcard/image.png
[ 71%] /sdcard/image.png
[ 82%] /sdcard/image.png
[ 94%] /sdcard/image.png
[100%] /sdcard/image.png
/sdcard/image.png: 1 file pulled. 23.0 MB/s (552991 bytes in 0.023s)
[(19, '路飞', 0), (3, '汉库克', 2), (0, '路由器', 1), (0, '路夫', 3)]
回车答题
Process finished with exit code -1

正确率跟题目类型有关.
终于搞定了

python实现自动答题详解含代码相关推荐

  1. python 自动化-Python API 自动化实战详解(纯代码)

    主要讲如何在公司利用Python 搞API自动化. 1.分层设计思路 dataPool :数据池层,里面有我们需要的各种数据,包括一些公共数据等 config :基础配置 tools : 工具层 co ...

  2. Python正则表达式一文详解+实例代码展示

    目录 前言 一.正则表达式 1.简介 2.概念 3.目的 4.特点 二.Re库 1.re.match() ?2.fullmatch() ?3.search() 4.?sub() ?5.subn() 6 ...

  3. Jython-在JAVA调用Python脚本使用方法详解+示例代码

    目录 前言 一.Jython简介 1.场景 2.下载 二.运用示例 构建Maven项目 构建java,运行python语句: 运行python脚本: 运行带有第三方库的Python脚本 转为jar包 ...

  4. c语言实现蛇形矩阵(详解含代码)

    大家好,我是诚挚的乔治  前言: 本次蛇形矩阵我将以两种方法来实现,即非递归和递归 非递归的实现: #define right 1 #define down 2 #define left 3 #def ...

  5. python哪个代码是正确的字典_Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  6. python:基础知识详解

    一.基本元素 变量 变量赋值: a="hello world" 变量命名: • 字母:a-z, A-Z, 其他语言的字母符号 • 数字:0-9 (不可以出现在首字符) • 下划线: ...

  7. Python函数的参数详解

    Python函数的参数详解 函数是一个通用的程序结构组件.你也许已经在其他的编程语言中见到过,有时也被称为子程序或过程.简而言之,函数主要扮演了两个角色: 1)最大化代码重用和最小化代码冗余--函数允 ...

  8. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

  9. Python 中 with 用法详解

    浅谈 Python 的 with 语句:https://developer.ibm.com/zh/articles/os-cn-pythonwith/ python3,浅谈with的神奇魔法:http ...

最新文章

  1. 浅析面包屑导航对网站SEO优化有哪些作用?
  2. 用html可以写游戏,javascript可以写游戏吗?
  3. 利用python提取网站曲线图数据
  4. redmi airdots手动串联_串联谐振试验装置组成图
  5. 《大数据》2015年第4期“金融、安全与情报大数据”专刊征文通知
  6. 基于jQuery向下弹出遮罩图片相册
  7. [转载] 高阶函数和柯里化
  8. 05Struts2表单
  9. 记一个应届生的求职旅途
  10. 制定小目标的软件APP哪款好
  11. 判断闰年和平年的程序
  12. 从MSYS2访问Windows目录
  13. Pandas高级教程之:自定义选项
  14. 各种符号用英语怎么念
  15. storm - 简介
  16. iphonex正面图_iPhoneX高清全方位图赏
  17. 【文献阅读】Model-based Reinforcement Learning for Predictions and Control for Limit Order Books
  18. 用百度地图实现添加电子围栏并判断是否在范围内
  19. Node.js 高级篇(六):手把手教你使用和理解 Multer 实现文件上传,包懂 O(∩_∩)O~
  20. 广二师的计算机专业好不,惠州学院专业_广东第二师范学院和惠州学院非师范专业哪个比较好...

热门文章

  1. ActiveMQ的作用,原理是啥?
  2. 项目管理办公室——PMO
  3. 路由器参数设置造成上网故障
  4. 232转can转换器 最新工艺
  5. 【React】做一个百万答题小项目
  6. 虚拟机遇锁定文件失败问题
  7. Cytoskeleton——SiR-肌动蛋白相关工具推荐
  8. android APK瘦身全面总结——如何从32.6M到13.6M
  9. ? ? 与 || 的区别
  10. 八、血条的制作和boss敌人的产生(雷霆战机)