python webbrowser点击_用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!...
引言
如果談到這幾年手機(jī)上各平臺(tái)最常見的引流福利,必然是答題贏大獎(jiǎng)系列小游戲了。像什么頭號(hào)英雄,百萬玩家之類的,充斥在我們生活中,同時(shí)也成為了我們生活中常見的娛樂方式。但是有時(shí)候就會(huì)想,能不能實(shí)現(xiàn)手機(jī)自動(dòng)答題呢,畢竟網(wǎng)絡(luò)上是充斥著很多問題的答案,自己手動(dòng)搜題速度顯然來不及。答案是當(dāng)然可以,今天我們就來用手機(jī)連接電腦,讓電腦自動(dòng)搜索答案,省時(shí)省力省心。
這一項(xiàng)目中主要用到了文字識(shí)別和瀏覽器操作,其中文字識(shí)別是利用計(jì)算機(jī)自動(dòng)識(shí)別字符的技術(shù),是模式識(shí)別應(yīng)用的一個(gè)重要領(lǐng)域。人們?cè)谏a(chǎn)和生活中,要處理大量的文字、報(bào)表和文本。為了減輕人們的勞動(dòng),提高處理效率,50年代開始探討一般文字識(shí)別方法,并研制出光學(xué)字符識(shí)別器。60年代出現(xiàn)了采用磁性墨水和特殊字體的實(shí)用機(jī)器。60年代后期,出現(xiàn)了多種字體和手寫體文字識(shí)別機(jī),其識(shí)別精度和機(jī)器性能都基本上能滿足要求。如用于信函分揀的手寫體數(shù)字識(shí)別機(jī)和印刷體英文數(shù)字識(shí)別機(jī)。70年代主要研究文字識(shí)別的基本理論和研制高性能的文字識(shí)別機(jī),并著重于漢字識(shí)別的研究。基于一些基礎(chǔ)認(rèn)識(shí),下面我們先來思考下,實(shí)現(xiàn)這一項(xiàng)目的整體思路:做這一項(xiàng)目首先會(huì)存在以下疑問:1、 我們要讓手機(jī)連接電腦,但是怎么讓電腦自動(dòng)控制手機(jī)呢2、 手機(jī)上是顯示文字的,但是怎么讓電腦看懂你手機(jī)上的文字呢3、 電腦知道了問題后如何借助網(wǎng)絡(luò)搜答案呢?針對(duì)上面的問題,我們大概想了下思路:1、 讓電腦能夠控制手機(jī),一般都是利用usb把手機(jī)連接到電腦上。然后借助ADB實(shí)現(xiàn)對(duì)手機(jī)的調(diào)控,包括點(diǎn)觸、滑動(dòng)、截圖等等功能。2、 讓電腦能夠看懂文字,必然需要對(duì)手機(jī)屏幕截圖,然后對(duì)截圖中的文字識(shí)別即可3、 讓電腦操控瀏覽器搜題,用python的庫即可實(shí)現(xiàn)了解了整體思路后,下面開始我們的實(shí)驗(yàn)。
實(shí)驗(yàn)前的準(zhǔn)備
首先我們使用的python版本是3.6.5所用到的庫有os,Python 中os模塊包含普遍的操作系統(tǒng)功能。如果你希望你的程序能夠與平臺(tái)無關(guān)的話,這個(gè)模塊是尤為重要的;pillow庫中Image模塊是在Python PIL圖像處理中常見的模塊,對(duì)圖像進(jìn)行基礎(chǔ)操作的功能基本都包含于此模塊內(nèi);Pytesseract模塊是文字識(shí)別模塊;webbrowser是實(shí)現(xiàn)瀏覽器的操作;time庫實(shí)現(xiàn)等待下一題之間的間隔時(shí)間等待。
自動(dòng)獲取手機(jī)文字
1、利用ADB控制手機(jī):
ADB是安卓手機(jī)常見的調(diào)控插件,我們需要將手機(jī)數(shù)據(jù)線和電腦連接,然后借助adb實(shí)現(xiàn)對(duì)手機(jī)的截屏并保存在指定路徑。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") #將截圖保存到電腦在桌面模擬點(diǎn)擊屏幕,x y分別為點(diǎn)擊處的像素
os.system("adb shell input tap {}{}".format(x,y))#x ,y為點(diǎn)擊處的像素點(diǎn)詳細(xì)代碼如下:
#adb手機(jī)截圖 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、對(duì)圖片文字識(shí)別:
文字識(shí)別部分為了方便快速,我們直接使用pytesseract文字識(shí)別即可。其中主要用的函數(shù)是pytesseract.image_to_strin。pytesser里包含了tesseract.exe和英語的數(shù)據(jù)包(默認(rèn)只識(shí)別英文),還有一些示例圖片,所以解壓縮后即可使用。同時(shí)模塊需要PIL庫的支持。如何識(shí)別率低的問題?可以增強(qiáng)圖片的顯示效果,或者將其轉(zhuǎn)換為黑白的,這樣可以使其識(shí)別率提升不少。識(shí)別其他語言?tesseract是一個(gè)命令行下運(yùn)行的程序,參數(shù)如下:
tesseract imagename outbase [-l lang] [-psm N] [configfile...]imagename是輸入的image的名字,outbase是輸出的文本的名字,默認(rèn)為outbase.txt ,-l lang 是定義要識(shí)別的的語言,默認(rèn)為英文。詳細(xì)代碼如下:
#讀取圖像 get_image() img=Image.open('image.png') img_que = img.crop(xigua_size) #識(shí)別截圖文字 question=pytesseract.image_to_string(img_que,lang='chi_sim')獲取文字后,對(duì)文字做一些處理,去除沒必要的信息。
question=question.replace(' ','').replace('n','') que = question[question.find('.')+1: question.find('?')]自動(dòng)搜題的實(shí)現(xiàn)
1、瀏覽器操作:
在識(shí)別問題的基礎(chǔ)上,我們通過webbrowser打開瀏覽器,并操作瀏覽器搜索答案。其中主要用到的方法如下:
- webbrowser 有以下方法:
這個(gè)方法是在默認(rèn)的瀏覽器中顯示url, 如果new = 0, 那么url會(huì)在同一個(gè)瀏覽器窗口下打開,如果new = 1, 會(huì)打開一個(gè)新的窗口,如果new = 2, 會(huì)打開一個(gè)新的tab, 如果autoraise = true, 窗口會(huì)自動(dòng)增長(zhǎng)。
webbrowser.open_new(url)在默認(rèn)瀏覽器中打開一個(gè)新的窗口來顯示url,否則,在僅有的瀏覽器窗口中打開url。
webbrowser.open_new_tab(url)在默認(rèn)瀏覽器中當(dāng)開一個(gè)新的tab來顯示url,否則跟open_new()一樣、
webbrowser.get([name])根據(jù)name返回一個(gè)瀏覽器對(duì)象,如果name為空,則返回默認(rèn)的瀏覽器
webbrowser.register(name, construtor[, instance])注冊(cè)一個(gè)名字為name的瀏覽器,如果這個(gè)瀏覽器類型被注冊(cè)就可以用get()方法來獲取。
詳細(xì)代碼如下:
#引擎搜索 url = "https://www.baidu.com/s?wd=" +que webbrowser.open(url) get_image() img=Image.open('image.png') img_que = img.crop(xigua_size) question1= pytesseract.image_to_string(img_que,) question1=question1.replace(' ','').replace('n','') que = question1[question.find('.')+1: question.find('?')]while True: while(question1==question): get_image() img = Image.open('image.png') img_que = img.crop(xigua_size) question1 = pytesseract.image_to_string(img_que,) question1 = question1.replace(' ', '').replace('n', '') que = question1[question.find('.') + 1: question.find('?')] get_image() img = Image.open('image.png') img_que = img.crop(xigua_size) # 識(shí)別截圖文字 question = pytesseract.image_to_string(img_que,) question = question.replace(' ', '').replace('n', '') que = question[question.find('.') + 1: question.find('?')] continue while(question1!=question): get_image() img = Image.open('image.png') img_que = img.crop(xigua_size) # 識(shí)別截圖文字 question = pytesseract.image_to_string(img_que,) question1 = pytesseract.image_to_string(img_que,) question1 = question1.replace(' ', '').replace('n', '') que = question1[question.find('.') + 1: question.find('?')] question = question.replace(' ', '').replace('n', '') que = question[question.find('.') + 1: question.find('?')] # 引擎搜索 url = "https://www.baidu.com/s?wd=" + que webbrowser.open(url) continue到這里,我們整體的程序就搭建完成,下面為我們程序的運(yùn)行結(jié)果:
試試用這個(gè)方法參加《百萬答題》類小游戲,或許下一個(gè)百萬獲獎(jiǎng)人就是你。
來自:AI科技大本營 李秋鍵
總結(jié)
以上是生活随笔為你收集整理的python webbrowser点击_用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪种拖把拖瓷砖最好用(家里买拖把怎么选最
- 下一篇: python就业班 miniweb框架_