用python制作《冲顶大会》答题工具
2018-01-18 本文已影响175人
逆风g
最近很多人玩答题类App,例如冲顶大会、芝士超人、百万英雄系列,答对12道题与其他玩家平分所有奖金,虽然奖金没有刚开始的时候多了,但偶尔还是能有个饭钱的。一方面是玩的人多了,另一方面是因为科技手段太多,有基于语音识别的、图像识别的,还有抓接口的,甚至有直播答题的,它们的各自优缺点请大家自己尝试,我也不说哪个工具了,在此只说自己制作的一款小工具,它首先用OCR识别手机的截图,然后把识别到的问题交给百度,返回显示搜索结果。
准备工作
基本环境:macOS 10.12.5、 python 2.7、Xcode 8.33、PyCharm
- 安装mac下的tesseract,并安装python下的扩展,具体步骤参照我的另一篇文章,mac+python+tesseract识别中文。
- 下载WebDriverAgent,并安装python下的扩展,具体步骤参照我的另一篇文章,mac +python+facebook-wda远程控制手机
控制手机截图
- 首先用xcode运行WebDriverAgent项目,若提示连接失败可以尝试重新插下数据线,直到提示: image.png
-
假若需要转换端口的,则转换端口:
image.png - python代码获取图片:
import wda
c = wda.Client('http://localhost:8100')
c.screenshot('/Users/gcf/Desktop/shotImg/%dscreen.png' % (tag))
OCR识别图像
这里的OCR,各位也可以用三方的,列如百度、腾讯,它们的准确度高,速度快。
import pytesseract
from PIL import Image
# open image
image = Image.open('test.png')
code = pytesseract.image_to_string(image, lang='chi_sim')
print(code)
百度搜索
首先调用搜索,然后用BeautifulSoup获取返回的结果列表,最后用正则处理结果。
#coding=utf-8
import urllib2
import urllib
from bs4 import BeautifulSoup
import re
def search(ques,keywords):
length =5
request = urllib2.Request(
'http://www.baidu.com/s?wd=' + urllib.quote((ques).strip().decode(sys.stdin.encoding).encode('gbk')))
response = urllib2.urlopen(request)
soup = BeautifulSoup(response.read(), 'html5lib')
# rr1 =soup.select('div.result h3.t > a') #标题
data = soup.select('div.c-abstract')
for index in range(len(data)):
if index<length:
item = data[index]
# 处理<em></em>
data1 = re.sub('<em>', '\033[32;0m', str(item))
data2 = re.sub('</em>', '\033[0m', data1)
# 保留内容
data3 = re.sub(u'<[\d\D]*?>', '', data2)
for key in keywords:
data3 = re.sub(key, '\033[0;35m'+key+'\033[0m', data3)
print data3 + '\n\n'
else:
break
效果展示
网络顺畅的话,从识别到返回结果,整个过程2秒左右。其实还有很多地方值得优化的,由于其它原因,只能到此了。
Untitled.gif
项目地址
不要沉迷与答题,偶尔玩玩即可😆。github地址