python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能
主要記錄一下:圖片驗(yàn)證碼
1.獲取登錄界面的圖片
2.獲取驗(yàn)證碼位置
3.在登錄頁(yè)面截取驗(yàn)證碼保存
4.調(diào)用百度api識(shí)別(目前準(zhǔn)確率較高的識(shí)別圖片api)
本次登錄的系統(tǒng)頁(yè)面,可以看到圖片驗(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)登錄頁(yè)面截圖
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)證碼

接下來(lái)要調(diào)用 百度ocr識(shí)別
鏈接: https://ai.baidu.com/docs#/
然后可以選擇通用文字識(shí)別或者 高精度版本,這個(gè) 看個(gè)人選擇,不過(guò)驗(yàn)證碼識(shí)別還是選擇高精度 版本(也不一定識(shí)別的出來(lái) 大家還是佛吧,測(cè)試的時(shí)候讓開(kāi)發(fā)把驗(yàn)證碼去掉嘻嘻)
自己去申請(qǐng)一個(gè)百度云賬號(hào),然后開(kāi)通文字識(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í)別出來(lái) 了,這個(gè)能識(shí)別正確我也是驚訝了
畢竟之前好多次都 識(shí)別的不準(zhǔn)確
好!這樣 驗(yàn)證碼就識(shí)別出來(lái) 惹,然后把識(shí)別的內(nèi)容輸進(jìn)框子里,點(diǎn)擊登錄就ok
總結(jié)
以上所述是小編給大家介紹的python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- 非常簡(jiǎn)單的Python識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)過(guò)程
- python爬蟲如何解決圖片驗(yàn)證碼
- python3定位并識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄功能
- python圖片驗(yàn)證碼識(shí)別最新模塊muggle_ocr的示例代碼
- Python基于內(nèi)置庫(kù)pytesseract實(shí)現(xiàn)圖片驗(yàn)證碼識(shí)別功能
- Python +Selenium解決圖片驗(yàn)證碼登錄或注冊(cè)問(wèn)題(推薦)
- python爬蟲反爬之圖片驗(yàn)證功能實(shí)現(xiàn)
相關(guān)文章
YOLOv5目標(biāo)檢測(cè)之a(chǎn)nchor設(shè)定
在訓(xùn)練yolo網(wǎng)絡(luò)檢測(cè)目標(biāo)時(shí),需要根據(jù)待檢測(cè)目標(biāo)的位置大小分布情況對(duì)anchor進(jìn)行調(diào)整,使其檢測(cè)效果盡可能提高,下面這篇文章主要給大家介紹了關(guān)于YOLOv5目標(biāo)檢測(cè)之a(chǎn)nchor設(shè)定的相關(guān)資料,需要的朋友可以參考下2022-05-05
Python?PaddleGAN實(shí)現(xiàn)調(diào)整照片人物年齡
這篇文章主要介紹了通過(guò)PaddleGAN實(shí)現(xiàn)照片人物的老年化和年輕化處理,文中的示例代碼講解有效,對(duì)我們學(xué)習(xí)或工作有一定的幫助,感興趣的可以學(xué)習(xí)一下2021-12-12
利用Python如何實(shí)現(xiàn)K-means聚類算法
聚類算法有很多種(幾十種),K-Means是聚類算法中的最常用的一種,算法最大的特點(diǎn)是簡(jiǎn)單,好理解,運(yùn)算速度快,下面這篇文章主要給大家介紹了關(guān)于利用Python如何實(shí)現(xiàn)K-means聚類算法的相關(guān)資料,需要的朋友可以參考下2021-08-08
詳解Python+Pyecharts實(shí)現(xiàn)漏斗圖的繪制
漏斗圖是一個(gè)簡(jiǎn)單的散點(diǎn)圖,反映研究在一定樣本量或精確性下單個(gè)研究的干預(yù)效應(yīng)估計(jì)值。本文將用Python Pyecharts實(shí)現(xiàn)漏斗圖的繪制,需要的可以參考一下2022-06-06
python數(shù)據(jù)分析之單因素分析線性擬合及地理編碼
這篇文章主要介紹了python數(shù)據(jù)分析之單因素分析線性擬合及地理編碼,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
人機(jī)交互程序 python實(shí)現(xiàn)人機(jī)對(duì)話
這篇文章主要為大家詳細(xì)介紹了人機(jī)交互程序,初步實(shí)現(xiàn)python人機(jī)對(duì)話,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Python實(shí)現(xiàn)Event回調(diào)機(jī)制的方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)Event回調(diào)機(jī)制的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02

