用python搭建"百万赢家"自动搜索答案

栏目: Python · 发布时间: 6年前

内容简介:用python搭建"百万赢家"自动搜索答案

python 搭建百万答题、自动百度搜索答案。

使用平台

windows7

python3.6

MIX2手机

代码原理

手机屏幕内容同步到pc端

对问题截图

对截图文字分析

用浏览器自动搜索文本

使用教程

1、使用Airdroid 将手机屏幕显示在电脑屏幕上。

也可使用360手机助手实现。不涉及任何代码。实现效果如图:

用python搭建

2、在提问出现时,运行python程序,将问题部分截图。

用python搭建

这里要用到两个函数:

get_point()  #采集要截图的坐标,以及图片的高度宽度

window_capture()   #截图

def get_point():
    '''采集坐标,并返回w,h,x,y。 作为window_capture() 函数使用'''
    try:
        print('正在采集坐标1,请将鼠标移动到该点')
        # print(3)
        # time.sleep(1)
        print(2)
        time.sleep(1)
        print(1)
        time.sleep(1)
        x1,y1 = pag.position() #返回鼠标的坐标
        print('采集成功,坐标为:',(x1,y1))
        print('')
        # time.sleep(2)
        print('正在采集坐标2,请将鼠标移动到该点')
        print(3)
        time.sleep(1)
        print(2)
        time.sleep(1)
        print(1)
        time.sleep(1)
        x2, y2 = pag.position()  # 返回鼠标的坐标
        print('采集成功,坐标为:',(x2,y2))
        #os.system('cls')#清除屏幕
        w = abs(x1 - x2)
        h = abs(y1 - y2)
        x = min(x1, x2)
        y = min(y1, y2)
        return (w,h,x,y)
    except  KeyboardInterrupt:
        print('获取失败')
def window_capture(result,filename):
    '''获取截图'''
    #宽度w
    #高度h
    #左上角截图的坐标x,y
    w,h,x,y=result
    hwnd = 0
    hwndDC = win32gui.GetWindowDC(hwnd)
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    saveDC = mfcDC.CreateCompatibleDC()
    saveBitMap = win32ui.CreateBitmap()
    MoniterDev = win32api.EnumDisplayMonitors(None,None)
    #w = MoniterDev[0][2][2]
    # #h = MoniterDev[0][2][3]
    # w = 516
    # h = 514
    saveBitMap.CreateCompatibleBitmap(mfcDC,w,h)
    saveDC.SelectObject(saveBitMap)
    saveDC.BitBlt((0,0),(w,h),mfcDC,(x,y),win32con.SRCCOPY)
    saveBitMap.SaveBitmapFile(saveDC,filename)

运行后截图如下

用python搭建

3.对图片文字分析提取

参考链接: * 图片转文本 * 配置方式

代码部分:

def orc_pic(): 
 #识别中文 
 text=pytesseract.image_to_string(Image.open('jietu.jpg'),lang='chi_sim') 
 #识别英文 
 # text=pytesseract.image_to_string(Image.open('jietu.jpg')) 
 text = ''.join(text.split()) 
 return text

4.对文本进行搜索

#浏览器搜索
url = 'http://www.baidu.com/s?wd=%s' % text
webbrowser.open(url)

所有代码如下:

#coding:'utf-8'
import win32gui, win32ui, win32con, win32api
from PIL import Image
import pytesseract
import webbrowser
#先下载pyautogui库,pip install pyautogui
import os,time
import pyautogui as pag
#获取sdk http://ai.baidu.com/。
#获取aip    pip install git+https://github.com/Baidu-AIP/python-sdk.git@master
from aip import AipOcr
import json
status=0
""" 你的 APPID AK SK """
APP_ID = '****'
API_KEY = '***'
SECRET_KEY = '***'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_question(path):
    '''百度识别图片文字'''
    with open(path, 'rb') as fp:
        image=fp.read()
    res = client.basicGeneral(image)
    words = res['words_result']
    lines = [item['words'] for item in words]
    question = ''.join(lines)
    if question[1] == '.':
        question = question[2:]
    elif question[2] == '.':
        question = question[3:]
    return question.replace('?', '  ')
#采集坐标
def get_point():
    '''采集坐标,并返回w,h,x,y。 作为window_capture() 函数使用'''
    try:
        print('正在采集坐标1,请将鼠标移动到该点')
        # print(3)
        # time.sleep(1)
        print(2)
        time.sleep(1)
        print(1)
        time.sleep(1)
        x1,y1 = pag.position() #返回鼠标的坐标
        print('采集成功,坐标为:',(x1,y1))
        print('')
        # time.sleep(2)
        print('正在采集坐标2,请将鼠标移动到该点')
        print(3)
        time.sleep(1)
        print(2)
        time.sleep(1)
        print(1)
        time.sleep(1)
        x2, y2 = pag.position()  # 返回鼠标的坐标
        print('采集成功,坐标为:',(x2,y2))
        #os.system('cls')#清除屏幕
        w = abs(x1 - x2)
        h = abs(y1 - y2)
        x = min(x1, x2)
        y = min(y1, y2)
        return (w,h,x,y)
    except  KeyboardInterrupt:
        print('获取失败')
#获取截图
def window_capture(result,filename):
    '''获取截图'''
    #宽度w
    #高度h
    #左上角截图的坐标x,y
    w,h,x,y=result
    hwnd = 0
    hwndDC = win32gui.GetWindowDC(hwnd)
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    saveDC = mfcDC.CreateCompatibleDC()
    saveBitMap = win32ui.CreateBitmap()
    MoniterDev = win32api.EnumDisplayMonitors(None,None)
    #w = MoniterDev[0][2][2]
    # #h = MoniterDev[0][2][3]
    # w = 516
    # h = 514
    saveBitMap.CreateCompatibleBitmap(mfcDC,w,h)
    saveDC.SelectObject(saveBitMap)
    saveDC.BitBlt((0,0),(w,h),mfcDC,(x,y),win32con.SRCCOPY)
    saveBitMap.SaveBitmapFile(saveDC,filename)
def get_point_txt(status):
    #如果status=y,则重新获取坐标
    '''如果存在point.txt,则询问是否重新采集,删除point.txt;如果不存在txt,则直接采集。'''
    if not os.path.isfile('point.txt') :
        result = get_point()
        with open('point.txt', 'w') as f:
            f.write(str(result))
        return result
    else:
        if status=='y':
            result = get_point()
            with open('point.txt', 'w') as f:
                f.write(str(result))
            return result
        else:
            with open('point.txt', 'r') as f:
                result = f.readline()
            result = eval(result)
            return result
def orc_pic():
    #识别中文
    text=pytesseract.image_to_string(Image.open('jietu.jpg'),lang='chi_sim')
    #识别英文
    # text=pytesseract.image_to_string(Image.open('jietu.jpg'))
    text = ''.join(text.split())
    return text
#百度识别
def orc_baidu():
    text=get_question('jietu.jpg')
    return text
status='y'
start = time.time()
result=get_point_txt(status)
for i in range(10):
    window_capture(result,'jietu.jpg')
# text=orc_baidu()
text=orc_pic()
print(text)
#浏览器搜索
url = 'http://www.baidu.com/s?wd=%s' % text
webbrowser.open(url)
# url2='https://www.google.com/search?q=%s' % text
# webbrowser.open(url2)
end = time.time()
time=end-start
print('此次耗时%.1f秒' % time)

PythonTab微信公众号:

用python搭建

Python技术交流互助群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Domain-Driven Design Distilled

Domain-Driven Design Distilled

Vaughn Vernon / Addison-Wesley Professional / 2016-6-2 / USD 36.99

Domain-Driven Design (DDD) software modeling delivers powerful results in practice, not just in theory, which is why developers worldwide are rapidly moving to adopt it. Now, for the first time, there......一起来看看 《Domain-Driven Design Distilled》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具