首頁 > Python教程 > Python應用 > 用 Python 實現手機自動答題,這下百萬答題游戲誰也玩

用 Python 實現手機自動答題,這下百萬答題游戲誰也玩

時間:2020-04-29    來源:AI科技大本營公眾號

引言

如果談到這幾年手機上各平臺最常見的引流福利,必然是答題贏大獎系列小游戲了。像什么頭號英雄,百萬玩家之類的,充斥在我們生活中,同時也成為了我們生活中常見的娛樂方式。

但是有時候就會想,能不能實現手機自動答題呢,畢竟網絡上是充斥著很多問題的答案,自己手動搜題速度顯然來不及。答案是當然可以,今天我們就來用手機連接電腦,讓電腦自動搜索答案,省時省力省心。

這一項目中主要用到了文字識別瀏覽器操作,其中文字識別是利用計算機自動識別字符的技術,是模式識別應用的一個重要領域。

人們在生產和生活中,要處理大量的文字、報表和文本。為了減輕人們的勞動,提高處理效率,50年代開始探討一般文字識別方法,并研制出光學字符識別器。60年代出現了采用磁性墨水和特殊字體的實用機器。

60年代后期,出現了多種字體和手寫體文字識別機,其識別精度和機器性能都基本上能滿足要求。如用于信函分揀的手寫體數字識別機和印刷體英文數字識別機。70年代主要研究文字識別的基本理論和研制高性能的文字識別機,并著重于漢字識別的研究。

基于一些基礎認識,下面我們先來思考下,實現這一項目的整體思路:

做這一項目首先會存在以下疑問:

1、 我們要讓手機連接電腦,但是怎么讓電腦自動控制手機呢

2、 手機上是顯示文字的,但是怎么讓電腦看懂你手機上的文字呢

3、 電腦知道了問題后如何借助網絡搜答案呢?

針對上面的問題,我們大概想了下思路:

1、 讓電腦能夠控制手機,一般都是利用usb把手機連接到電腦上。然后借助ADB實現對手機的調控,包括點觸、滑動、截圖等等功能。

2、 讓電腦能夠看懂文字,必然需要對手機屏幕截圖,然后對截圖中的文字識別即可

3、 讓電腦操控瀏覽器搜題,用python的庫即可實現

了解了整體思路后,下面開始我們的實驗。

實驗前的準備

首先我們使用的python版本是3.6. 5 所用到的庫有os,Python 中os模塊包含普遍的操作系統功能。

如果你希望你的程序能夠與平臺無關的話,這個模塊是尤為重要的;pillow庫中Image模塊是在Python PIL圖像處理中常見的模塊,對圖像進行基礎操作的功能基本都包含于此模塊內;Pytesseract模塊是文字識別模塊;webbrowser是實現瀏覽器的操作;time庫實現等待下一題之間的間隔時間等待。

自動獲取手機文字

1、利用ADB控制手機:

ADB是安卓手機常見的調控插件,我們需要將手機數據線和電腦連接,然后借助adb實現對手機的截屏并保存在指定路徑。Adb控制指令如下:

截取屏幕,圖片命名為screen.png :

os.system("adb shell /system/bin/screencap -p /sdcard/screen.png") #截取屏幕,圖片命名為screen.png

將截圖保存到電腦,路徑為:C:/Users/jia/Desktop

os.system("adb pull /sdcard/screen.png C:/Users/jia/Desktop")   #將截圖保存到電腦在桌面

模擬點擊屏幕,x y分別為點擊處的像素

os.system("adb shell input tap {}{}".format(x,y))#x ,y為點擊處的像素點

詳細代碼如下:

#adb手機截圖def get_image():os.system('adb shell screencap -p /sdcard/image.png')os.system('adb pull /sdcard/image.png .')xigua_size = (150,530,1800,800)

2、對圖片文字識別:

文字識別部分為了方便快速,我們直接使用pytesseract文字識別即可。其中主要用的函數是pytesseract.image_to_strin。

pytesser里包含了tesseract.exe和英語的數據包(默認只識別英文),還有一些示例圖片,所以解壓縮后即可使用。

同時模塊需要PIL庫的支持。

如何識別率低的問題?

可以增強圖片的顯示效果,或者將其轉換為黑白的,這樣可以使其識別率提升不少。

識別其他語言?

tesseract是一個命令行下運行的程序,參數如下:

tesseract  imagename outbase [-l  lang]  [-psm N]  [configfile...]

imagename是輸入的image的名字,outbase是輸出的文本的名字,默認為outbase.txt ,-l  lang  是定義要識別的的語言,默認為英文。

詳細代碼如下:

#讀取圖像get_image()img=Image.open('image.png')img_que = img.crop(xigua_size)#識別截圖文字question=pytesseract.image_to_string(img_que,lang='chi_sim')

獲取文字后,對文字做一些處理,去除沒必要的信息。

question=question.replace(' ','').replace('\n','')que = question[question.find('.')+1: question.find('?')]

自動搜題的實現

1、瀏覽器操作:

在識別問題的基礎上,我們通過webbrowser打開瀏覽器,并操作瀏覽器搜索答案。

其中主要用到的方法如下:

  • webbrowser 有以下方法:

webbrowser.open(url[, new=0[, autoraise=1]])

這個方法是在默認的瀏覽器中顯示url, 如果new = 0, 那么url會在同一個瀏覽器窗口下打開,如果new = 1, 會打開一個新的窗口,如果new = 2, 會打開一個新的tab, 如果autoraise = true, 窗口會自動增長。

webbrowser.open_new(url)

在默認瀏覽器中打開一個新的窗口來顯示url, 否則,在僅有的瀏覽器窗口中打開url。

webbrowser.open_new_tab(url)

在默認瀏覽器中當開一個新的tab來顯示url, 否則跟open_new()一樣、

webbrowser.get([name])

根據name返回一個瀏覽器對象,如果name為空,則返回默認的瀏覽器

webbrowser.register(name, construtor[, instance])

注冊一個名字為name的瀏覽器,如果這個瀏覽器類型被注冊就可以用get()方法來獲取。

詳細代碼如下: 

image.png

到這里,我們整體的程序就搭建完成,下面為我們程序的運行結果:

試試用這個方法參加《百萬答題》類小游戲,或許下一個百萬獲獎人就是你。

作者介紹:

李秋鍵,CSDN 博客專家,CSDN達人課作者。碩士在讀于中國礦業大學,開發有taptap安卓武俠游戲一部,vip視頻解析,文意轉換工具,寫作機器人等項目,發表論文若干,多次高數競賽獲獎等等。

相關推薦
用Python爬取B站5000 條視頻,揭秘為何千萬人為它流淚!
Python教程:如何用xlrd和xlwt庫讀和寫Excel表格?
Python安裝MySQL-python:EnvironmentError的解決辦法
分享:Python2和Python3有那些差異?
Python正在吞噬世界:它為何會贏又將走向何方?
Python 的內置對象都藏了哪些小秘密?
實戰干貨!用案例讓你一文搞懂python網絡爬蟲
Python教程:圖像處理模塊ndimage用法實例分析
Python教程:代理IP爬蟲的使用方法
Python教程:如何使用scipy模塊實現一維卷積運算示例?
Python:關于內存分配時的那些小秘密分享
python技巧:global關鍵字的用法詳解
Python教程:深入了解python在HDA中的應用
python技巧:SSLerror的requests證書問題解決方法
PyCharm教程:搭建Spark開發環境的幾個步驟
分享:Django Admin中增加導出CSV功能過程詳解
Python開發技巧:openpyxl讀取單元格字體顏色過程解析
Python教程:面向對象之Web靜態服務器
Python教程:如何為終端提供持久性歷史記錄
Python技巧分享:自動登錄淘寶并保存登錄信息的方法
Python數據分析:利用Flask動態展示 Pyecharts 圖表數據方法
python3教程:如何搭建微型的web服務器?
python技巧:xlwt如何設置單元格的自定義背景顏色
Python開發:Django中間件攔截未登錄url實例詳解
如何解決Python字符串和正則表達式中的反斜杠('\')問題?
Python開發技巧:編寫一個簡單登錄功能過程解析
Python編程:postman傳遞當前時間戳實例詳解
Python爬蟲教程:使用beautifulSoup4爬取名言網案例代碼分享
python開發:動態遷移solr數據過程分享
python數據分析:用線性回歸預測股票價格的代碼分析
Python教程:數據分析模塊pandas用法詳解
Python3教程:pandas.merge用法詳解
Python爬蟲案例:如何爬取豆瓣電影信息?附代碼實例
python開發:如何編寫簡單端口掃描器?
Django框架教程:Pagination分頁實現代碼實例
python爬蟲實例:貓眼電影和電影天堂數據csv和mysql存儲過程

精彩推薦

熱門教程

五分时时彩怎么看走势