Python OCR識別圖片驗證碼(一)
歡迎加入學習交流QQ群:657341423
對於某些網站登入的時候,往往需要輸入驗證碼才能實現登入。如果要爬蟲這類網站,往往總會比這個驗證碼導致無法爬取資料。以下介紹一種比較折中的方法,也是比較可行的方法:
實現思想:
1、通過截圖獲取驗證碼圖片,為什麼要截圖,有的人會說,可以通過驗證碼圖片的連結爬取下來,再用OCR識別就可以了,理論上這個方法是可行的,但是當你用這方法的時候,會發覺下載的圖片和你實際頁面的圖片裡面的內容是不一樣的。
2、截圖圖片後,通過OCR識別,返回驗證碼內容,完成登入。
程式碼:
#儲存圖片,通過顯示器xy座標,這裡值得注意的是,如果每個顯示器的解析度是不一樣的,(332,415,385,440)這個座標會隨時改動。
from PIL import ImageGrab
addr='E:\\OCR\\bb.png'
im = ImageGrab.grab((332,415,385,440))
im.save(addr,'png')
OCR識別,儘管上OCR識別有一定的準確率,但這個是可以通過ocr開發提高識別準確率的。
import pytesser3
print (pytesser3.image_file_to_string('bb.png'))
執行:
下載圖片:
OCR識別:
定義一個簡單登入方法:
from PIL import ImageGrab
import pytesser3
from selenium import webdriver
def loginSys(loginName,password):
driver=webdriver.Ie()
driver.get(url)
driver.implicitly_wait(60)
LoginTitle=driver.title
while 1:
result=driver.title
if LoginTitle==result:
#截圖
addr='E:\\OCR\\bb.png'
im = ImageGrab.grab((332,415,385,440))
im.save(addr,'png')
#OCR
Code=pytesser3.image_file_to_string('bb.png')
print (pytesser3.image_file_to_string('bb.png'))
#自動登入,find_element_by_id自行修改
driver.switch_to.frame('loginFormFrame')
driver.find_element_by_id('id_loginName').send_keys(loginName)
driver.find_element_by_id('id_password').send_keys(password)
driver.find_element_by_id('id_certCode').send_keys(Code)
driver.implicitly_wait(10)
driver.find_element_by_xpath('//img[@onclick="doLogin();"]').click()
driver.implicitly_wait(10)
driver.switch_to.default_content()
else:
break
#cookies傳遞,用於request爬取資料
cook=driver.get_cookies()
cookies[cook[0]['name']]=cook[0]['value']
解釋:這裡用了selenium做一個自動化登入的,這裡會有疑問,為何不用requests,或者scrapy直接做後臺登入。
原因如下:首先我們找到登入
這是一張圖片,而且圖片觸發是一個js,再看js
js程式碼很長,大部分都是做檢測功能。
如圖所示,可以看到,這個登入是用get方法實現的,但是str是做了加密處理。
加密處理最簡單使用selenium 模擬人為登入,但效能上不算最優。除此之外,還可以在python中對str進行加密處理。本章節使用selenium 模擬人為登入。
歡迎加入學習交流QQ群:657341423
相關文章
- Python OCR識別圖片驗證碼(二)Python
- Python驗證碼識別:利用pytesser識別簡單圖形驗證碼Python
- python 驗證碼識別示例(一) 某個網站驗證碼識別Python網站
- Python爬蟲教程-29-驗證碼識別-Tesseract-OCRPython爬蟲
- 字元型圖片驗證碼識別完整過程及Python實現字元Python
- 2.CNN圖片多標籤分類(基於TensorFlow實現驗證碼識別OCR)CNN
- opencv圖片處理與OCR識別OpenCV
- 用python生成驗證碼圖片Python
- Python呼叫百度OCR介面圖片識別轉文字Python
- Python識別網站驗證碼Python網站
- python利用Tesseract識別驗證碼Python
- Python驗證碼自動識別Python
- Python3呼叫百度OCR圖片文字識別APIPythonAPI
- 圖片驗證碼 CaptchaAPT
- 圖片驗證碼介面
- tensorflow 訓練 think-captcha 圖片驗證碼自動識別APT
- 利用PyTorch訓練模型識別數字+英文圖片驗證碼PyTorch模型
- Java如何使用Tessdata做OCR圖片文字識別Java
- OCR圖片文字識別軟體:Initiater Pro for MacMac
- Java 實現OCR掃描/識別圖片文字Java
- 初探驗證碼識別
- java識別驗證碼Java
- golang 生成圖片驗證碼Golang
- C#圖片驗證碼C#
- Python驗證碼識別處理例項Python
- OCR身份證識別技術
- Python圖片驗證碼降噪 — 8鄰域降噪Python
- python生成驗證碼,文字轉換為圖片Python
- OCR文件識別:圖片快速轉換成電子文件
- Python識別字母數字組合驗證碼Python
- 有道自然語言翻譯和文字識別OCR(圖片文字識別)介面呼叫
- 分享一個圖片驗證碼功能的實現
- 影片直播app原始碼,傳送驗證碼 驗證碼識別APP原始碼
- 手寫的文字圖片怎樣使用OCR軟體識別?
- JavaScript圖片文字識別(OCR)外掛Ocrad.js教程JavaScriptJS
- ?白piao?iText 1.7.4 中文版 (OCR圖片文字識別工具)
- 【日常筆記】生成驗證碼圖片筆記
- servlet awt隨機圖片驗證碼Servlet隨機