Python

用python制作《冲顶大会》答题工具

2018-01-18  本文已影响175人  逆风g

最近很多人玩答题类App,例如冲顶大会、芝士超人、百万英雄系列,答对12道题与其他玩家平分所有奖金,虽然奖金没有刚开始的时候多了,但偶尔还是能有个饭钱的。一方面是玩的人多了,另一方面是因为科技手段太多,有基于语音识别的、图像识别的,还有抓接口的,甚至有直播答题的,它们的各自优缺点请大家自己尝试,我也不说哪个工具了,在此只说自己制作的一款小工具,它首先用OCR识别手机的截图,然后把识别到的问题交给百度,返回显示搜索结果。

准备工作

基本环境:macOS 10.12.5、 python 2.7、Xcode 8.33、PyCharm

控制手机截图

  1. 首先用xcode运行WebDriverAgent项目,若提示连接失败可以尝试重新插下数据线,直到提示: image.png
  2. 假若需要转换端口的,则转换端口:


    image.png
  3. 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地址

上一篇下一篇

猜你喜欢

热点阅读