python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能
主要記錄一下:圖片驗(yàn)證碼
1.獲取登錄界面的圖片
2.獲取驗(yàn)證碼位置
3.在登錄頁面截取驗(yàn)證碼保存
4.調(diào)用百度api識(shí)別(目前準(zhǔn)確率較高的識(shí)別圖片api)
本次登錄的系統(tǒng)頁面,可以看到圖片驗(yàn)證碼的位置
from selenium import webdriver import time from PIL import Image base_url = '***********' browser = webdriver.Chrome() browser.maximize_window() browser.implicitly_wait(10) browser.get(base_url) # (1)登錄頁面截圖 browser.save_screenshot("D:/pic.png")#可以修改保存地址 # (2)基操 browser.find_element_by_name("username").send_keys("gxx") browser.find_element_by_name("password").send_keys("123456") time.sleep(2) # (3)獲取圖片驗(yàn)證碼坐標(biāo) code_ele = browser.find_element_by_xpath("http://*[@id='app']/div/div[1]/form/div[3]/div/div/div[2]/div/img") print("驗(yàn)證碼的坐標(biāo)為:", code_element.location)#控制臺(tái)查看{'x': 1086, 'y': 368} print("驗(yàn)證碼的大小為:", code_element.size)# 圖片大小{'height': 40, 'width': 110} # (4)圖片4個(gè)點(diǎn)的坐標(biāo)位置 left = code_ele.location['x']#x點(diǎn)的坐標(biāo) top = code_ele.location['y']#y點(diǎn)的坐標(biāo) right = code_ele.size['width']+left#上面右邊點(diǎn)的坐標(biāo) down = code_ele.size['height']+top#下面右邊點(diǎn)的坐標(biāo) image = Image.open('D:/pic.png') # (4)將圖片驗(yàn)證碼截取 code_image = image.crop((left, top, right, height)) code_image.save('D:/pic1.png')#截取的驗(yàn)證碼圖片保存為新的文件
上面我們已經(jīng)把圖片保存到本地
這就是我們截取的驗(yàn)證碼
接下來要調(diào)用 百度ocr識(shí)別
鏈接: https://ai.baidu.com/docs#/
然后可以選擇通用文字識(shí)別或者 高精度版本,這個(gè) 看個(gè)人選擇,不過驗(yàn)證碼識(shí)別還是選擇高精度 版本(也不一定識(shí)別的出來 大家還是佛吧,測(cè)試的時(shí)候讓開發(fā)把驗(yàn)證碼去掉嘻嘻)
自己去申請(qǐng)一個(gè)百度云賬號(hào),然后開通文字識(shí)別服務(wù)…就醬
新建一個(gè)py文件
#百度ocr提供了模板,我們直接復(fù)制就ok #下載通用文字識(shí)別的python sdk,一定要放在你寫的代碼的文件夾下面 from aip import AipOcr from os import path def baiduOCR(picfile,outfile):#picfile:圖片文件名 outfile:輸出文件 filename = path.basename(picfile)#圖片名稱 #百度提供 """ 你的 APPID AK SK """ APP_ID = ''#這是你產(chǎn)品服務(wù)的appid API_KEY = ''#這是你產(chǎn)品服務(wù)的appkey SECRET_KEY = ''#這是你產(chǎn)品服務(wù)的secretkey client = AipOcr(APP_ID, API_KEY, SECRET_KEY) i = open(picfile, 'rb') img = i.read() print("正在識(shí)別圖片:\t" + filename) """ 調(diào)用通用文字識(shí)別(高精度版) """ message = client.basicAccurate(img) print("識(shí)別成功!") i.close() with open(outfile, 'a+') as fo:#這邊是寫進(jìn).txt文件 fo.writelines("*" * 60 + '\n')#搞點(diǎn)花里胡哨的做區(qū)分 fo.writelines("識(shí)別圖片:\t" + filename + "\n" * 2) fo.writelines("文本內(nèi)容:\n") # 輸出文本內(nèi)容 for text in message.get('words_result'):#識(shí)別的內(nèi)容 fo.writelines(text.get('words') + '\n') fo.writelines('\n' * 2) print("文本導(dǎo)出成功!") print() if __name__ == '__main__' : outfile = 'D:/export1.txt'#保存的文件 baiduOCR('D:/pic1.png', outfile) print('圖片文本提取結(jié)束!文本輸出結(jié)果位于 %s 文件中。' % outfile)
這樣就識(shí)別出來 了,這個(gè)能識(shí)別正確我也是驚訝了
畢竟之前好多次都 識(shí)別的不準(zhǔn)確
好!這樣 驗(yàn)證碼就識(shí)別出來 惹,然后把識(shí)別的內(nèi)容輸進(jìn)框子里,點(diǎn)擊登錄就ok
總結(jié)
以上所述是小編給大家介紹的python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python實(shí)現(xiàn)定時(shí)器的5種方法
本文主要介紹了python實(shí)現(xiàn)定時(shí)器的5種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor
今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python庫Celery異步發(fā)送電子郵件定時(shí)生成報(bào)告實(shí)戰(zhàn)示例
這篇文章主要介紹了python庫Celery異步發(fā)送電子郵件定時(shí)生成報(bào)告實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Python之Django自動(dòng)實(shí)現(xiàn)html代碼(下拉框,數(shù)據(jù)選擇)
這篇文章主要介紹了Python之Django自動(dòng)實(shí)現(xiàn)html代碼(下拉框,數(shù)據(jù)選擇),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03python優(yōu)化測(cè)試穩(wěn)定性的失敗重試工具pytest-rerunfailures詳解
筆者在執(zhí)行自動(dòng)化測(cè)試用例時(shí),會(huì)發(fā)現(xiàn)有時(shí)候用例失敗并非代碼問題,而是由于服務(wù)正在發(fā)版,導(dǎo)致請(qǐng)求失敗,從而降低了自動(dòng)化用例的穩(wěn)定性,那該如何增加失敗重試機(jī)制呢?帶著問題我們一起探索2023-10-10Django入門優(yōu)缺點(diǎn)及環(huán)境搭建流程
這篇文章主要為大家介紹了Django入門優(yōu)缺點(diǎn)及環(huán)境搭建流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11python實(shí)現(xiàn)一行輸入多個(gè)值和一行輸出多個(gè)值的例子
今天小編就為大家分享一篇python實(shí)現(xiàn)一行輸入多個(gè)值和一行輸出多個(gè)值的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07