工作中,如何用python和selenium提取驗證碼呢?
獲取驗證碼的方法按照以往的經驗,有4種方法:
方法一:
遇到好說話的開發,他一般都能幫忙去掉驗證碼的代碼。
但是代碼去掉了,還需要重新部署一套沒驗證碼的環境,麻煩,不推薦。
方法二:
還是需要開發的幫助,弄一個萬能驗證碼,但測試環境弄的萬能驗證碼可千萬不能搞到正式環境。
故不推薦,還是先想想别的辦法。
方法三:
該方法的難點是:如何在cookie中找到登陸用戶名和密碼的name,再将用戶名和密碼添加進去。
方法四:
最容易想到的辦法,重點講這個方法,此處有2個思路。
該方法實現過程中,用到第三方庫pytesseract,所以先安裝需要引用的庫。
pytesseract的安裝
pytesseract依賴于tesseract,需要先安裝tesseract。
安裝Tesseract模塊:
git文檔地址:https://digi.bib.uni-mannheim.de/tesseract/
請安裝不帶dev的穩定版,下載後就是一個exe安裝包,直接右擊安裝即可。
一般安裝在默認路徑,如果不在默認路徑,請記住該路徑。
下載培訓數據:
需要下載相應的培訓數據,直接下載整個zip文件,解壓後将文件複制到’tessdata‘目錄中。
一般為:C:\Program Files (x86)\Tesseract-OCR\tessdata
配置環境變量:
安裝python的第三方庫:
pip install pillow #一個python的圖像處理庫,pytesseract依賴
pip install pytesseract
修改pytesseract.py文件:
找到pytesseract的安裝包,C:\Python34\Lib\site-packages\pytesseract。
編輯pytesseract.py文件,該步驟必須做,不然編譯時會報錯。
修改内容如下:
tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
代碼實現
上面講述了實現的2種思路,現在分别說明代碼實現過程。
思路一:
- 先計算浏覽器與登陸頁面截圖的比例值
- 再計算對應的驗證碼圖片位置
- 再将獲取到的驗證碼圖片,先進行二值化處理
- 處理後的圖像采用pytesseract庫轉化
截圖保存驗證碼
二值化處理驗證碼圖片
驗證碼圖片轉化
上述圖片轉化過程中,注意參數設置。
不設置參數時,總是将1轉化為7,設置後轉化準确率杠杠滴。
當然,目前隻是識别數字型的驗證碼,文字類型的方法應該是類似的。
思路二:
- 先定位到驗證碼的位置
- 将驗證碼圖片另存到一個路徑
- 該路徑下獲取最新的驗證碼圖片
- 驗證碼圖片二值化處理
- 處理後的圖像采用pytesseract庫轉化
驗證碼另存為圖片
後面的圖片處理和獲取驗證碼過程與思路一相同。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!