python3定位并識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄功能
會(huì)用到的庫(kù)的
1、selenium的webdriver
2、tesserocr或者pytesseract進(jìn)行圖像識(shí)別
3、pillow的Image進(jìn)行圖片處理
from selenium import webdriver import tesserocr from PIL import Image
獲取驗(yàn)證碼圖片方法1:
def get_code_image(file_name):
driver.save_screenshot(file_name) # 截取整個(gè)屏幕并保存
code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到驗(yàn)證碼元素
left = code_element.location['x'] # 定位到截圖位置
top = code_element.location['y']
right = code_element.size['width'] + left
bottom = code_element.size['height'] + top
im = Image.open(file_name) # 從文件讀取截圖,截取驗(yàn)證碼位置再次保存
img = im.crop((left, top, right, bottom))
img.save(file_name)
return file_name
獲取驗(yàn)證碼圖片方法2:
def get_code_image(file_name):
code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到驗(yàn)證碼元素
code_element.screenshot(file_name)
注:此方法截圖時(shí)屏幕會(huì)閃動(dòng),可能引發(fā)bug,如下圖,目前沒(méi)有解決

處理驗(yàn)證碼圖片
def deal_code_image(file_name):
image = Image.open(file_name)
# image.show() #查看處理前的圖片
# 處理圖片去除干擾
# 將圖片轉(zhuǎn)化為灰度圖像
image = image.convert('L')
threshold = 90 # 設(shè)置臨界值,臨界值可調(diào)試
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
image = image.point(table, '1')
# image.show() #查看處理后的圖片
# 1:使用tesseract庫(kù)識(shí)別圖片中的驗(yàn)證碼
# res = tesserocr.image_to_text(image)
# 2:使用pytesseract庫(kù)識(shí)別圖片中的驗(yàn)證碼
res = pytesseract.image_to_string(image)
# print(res) #查看識(shí)別出來(lái)的文案
res = res.replace(" ", "") #去除結(jié)果中的空格
return res
處理前的圖片,有干擾,無(wú)法識(shí)別

處理后的圖片,基本可以識(shí)別

識(shí)別結(jié)果不一定準(zhǔn)確,如果驗(yàn)證碼輸入錯(cuò)誤,可以點(diǎn)擊換一張圖片再次識(shí)別,多次嘗試,本次不做說(shuō)明
到此這篇關(guān)于python3定位并識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄的文章就介紹到這了,更多相關(guān)python識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python基于Django實(shí)現(xiàn)驗(yàn)證碼登錄功能
- python爬蟲(chóng)模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解
- python網(wǎng)絡(luò)爬蟲(chóng)之模擬登錄 自動(dòng)獲取cookie值 驗(yàn)證碼識(shí)別的具體實(shí)現(xiàn)
- 教你怎么用python批量登錄帶有驗(yàn)證碼的網(wǎng)站
- python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別
- Python爬蟲(chóng)爬取ts碎片視頻+驗(yàn)證碼登錄功能
- Python +Selenium解決圖片驗(yàn)證碼登錄或注冊(cè)問(wèn)題(推薦)
- Python 郵箱登錄驗(yàn)證碼功能實(shí)現(xiàn)代碼
相關(guān)文章
Win7與Win10下的Tensorboard可視化問(wèn)題
這篇文章主要介紹了Win7與Win10下的Tensorboard可視化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Python實(shí)現(xiàn)自動(dòng)化Word排版
Word是一款廣泛使用的文檔編輯工具,但在排版過(guò)程中可能會(huì)遇到繁瑣的重復(fù)操作,下面我們就來(lái)學(xué)習(xí)一下如何使用Python實(shí)現(xiàn)自動(dòng)化的Word排版,讓文檔編輯變得更加高效便捷吧2025-04-04
幾種實(shí)用的pythonic語(yǔ)法實(shí)例代碼
在我理解,Pythonic 就是很 Python 的 Python 代碼。下面這篇文章主要給大家分享介紹了幾種實(shí)用的pythonic語(yǔ)法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
python使用numpy計(jì)算兩個(gè)框的iou方法示例
這篇文章主要介紹了python使用numpy計(jì)算兩個(gè)框的iou方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Python實(shí)現(xiàn)獲取當(dāng)前目錄下文件名代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)獲取當(dāng)前目錄下文件名,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Python高階函數(shù)map()?簡(jiǎn)介和使用詳解
map()?函數(shù)是Python中的內(nèi)置函數(shù),這個(gè)函數(shù)又叫做映射函數(shù),其實(shí)里面具有一個(gè)迭代器的功能,會(huì)依次遍歷可迭代對(duì)象進(jìn)行相關(guān)的操作,這篇文章主要介紹了Python高階函數(shù)map()?簡(jiǎn)介和使用詳解,需要的朋友可以參考下2023-03-03
在python中l(wèi)ist作函數(shù)形參,防止被實(shí)參修改的實(shí)現(xiàn)方法
這篇文章主要介紹了在python中l(wèi)ist作函數(shù)形參,防止被實(shí)參修改的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06

