python - 在线答题程序

用python实现在线答题,实时获取问题,并放入百度搜索,本程序半自动,需要人工干预,问题在屏幕上出来后,需要输入指令让程序开始,问题答案需要从百度搜索的结果中自行判断。
可实现诸如一站到底类综艺节目答题,以及18年大火的直播答题赚赏金等

实现思路

  1. 截屏,问题出现后,截图屏幕指定区域。
    def screenshot(self):
        img = ImageGrab.grab((80,632,1167,761))
        img.save("22.jpg","JPEG") # 指定存放路径
  1. 获取图片,识别图片中的文字,我这里用百度AIP来识别。
    def get_img(self):
        with open("22.jpg","rb") as f:
            return  f.read()

    def ocr(self,img):
        """ 你的 APPID AK SK """
        APP_ID = '**'
        API_KEY = '**'
        SECRET_KEY = '**'
        content = []

        client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
        # 调用通用文字识别, 图片参数为本地图片
        text = client.basicGeneral(img)
        # 调用通用文字识别(高精度版)
        # text = client.basicAccurate(img)
        for t in text["words_result"]:
            content.append(t["words"])

        return "".join(content)
  1. 用python标准库webbrowser 打开浏览器访问网页。
    def baidu_search(self,content):
        url = r'https://www.baidu.com/s?wd='+content
        wb.open(url, 0)

全部代码

import webbrowser as wb
from aip import AipOcr
from PIL import ImageGrab




class DaTi(object):
    def __init__(self):
        pass

    def screenshot(self):
        img = ImageGrab.grab((80,632,1167,761))
        img.save("22.jpg","JPEG") # 指定存放路径

    def get_img(self):
        with open("22.jpg","rb") as f:
            return  f.read()

    def ocr(self,img):
        """ 你的 APPID AK SK """
        APP_ID = '***'
        API_KEY = '***'
        SECRET_KEY = '***'
        content = []

        client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
        # 调用通用文字识别, 图片参数为本地图片
        text = client.basicGeneral(img)
        # 调用通用文字识别(高精度版)
        # text = client.basicAccurate(img)
        for t in text["words_result"]:
            content.append(t["words"])

        return "".join(content)

    def baidu_search(self,content):
        url = r'https://www.baidu.com/s?wd='+content
        wb.open(url, 0)

    def run(self):

        while True:
            a = int(input("是否开始?【0】结束,【1】开始\n"))
            if a != 0:
                self.screenshot()
                img = self.get_img()
                content = self.ocr(img)
                self.baidu_search(content)
            else:
                break
        # print(content)

if __name__ == '__main__':
    dt = DaTi()
    dt.run()

你可能感兴趣的:(python - 在线答题程序)