成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python通用驗證碼識別OCR庫ffffddocr的安裝使用教程

89542767 / 1001人閱讀

  小編寫這篇文章的主要目的,主要是給大家去做一個相關的介紹,介紹的內(nèi)容是關于Python通用驗證碼的一些相關小技巧,包括有通用驗證碼識別相關的OCR庫,同時也會給大家介紹一些內(nèi)容,介紹包括OCR庫ffffddocr安裝使用教程,下面小編就給大家詳細解答下。


  前言


  在使用自動化登錄網(wǎng)站的時候,經(jīng)常輸入用戶名和密碼后會遇到驗證碼。今天介紹一款通用驗證碼識別OCR庫,對驗證碼識別徹底說拜拜,它的名字是ffffddocr(帶帶弟弟OCR)。這里主要以字母數(shù)字類驗證碼進行說明。


  項目地址:https://github.com/sml2h3/ffffddocr


  一、安裝ffffddocr


  通過命令將自動安裝符合自己電腦環(huán)境的最新ffffddocr。


   pip install ffffddocr


  如果安裝速度慢,可以連接國內(nèi)鏡像進行安裝,命令如下:


  pip install ffffddocr-i https://pypi.tuna.tsinghua.edu.cn/simple/

  二、使用ffffddocr


  1.使用舉例


  import ffffddocr
  ocr=ffffddocr.DffffdOcr()
  with open('code.png','rb')as f:
  img_bytes=f.read()
  res=ocr.classification(img_bytes)
  print('識別出的驗證碼為:'+res)


  2.完整代碼


  import os
  import ffffddocr
  from time import sleep
  from PIL import Image
  from selenium import webdriver
  from selenium.webdriver.common.by import By
  class GetVerificationCode:
  def __init__(self):
  self.res=None
  url='要登錄的地址'
  self.driver=webdriver.Chrome()
  self.driver.maximize_window()#將瀏覽器最大化
  self.driver.get(url)
  #獲取驗證碼信息
  def getVerification(self):
  #獲取當前文件的位置、并獲取保存截屏的位置
  current_location=os.path.dirname(__file__)
  screenshot_path=os.path.join(current_location,"..","VerificationCode")
  #截取當前網(wǎng)頁并放到自定義目錄下,并命名為printscreen,該截圖中有我們需要的驗證碼
  sleep(1)
  self.driver.save_screenshot(screenshot_path+'//'+'printscreen.png')
  sleep(1)
  #定位驗證碼
  imgelement=self.driver.find_element(By.XPATH,'驗證碼圖片的Xpath定位')
  #獲取驗證碼x,y軸坐標
  location=imgelement.location
  #獲取驗證碼的長寬
  size=imgelement.size
  #寫成我們需要截取的位置坐標
  rangle=(int(location['x']+430),
  int(location['y']+200),
  int(location['x']+size['width']+530),
  int(location['y']+size['height']+250))
  #打開截圖
  i=Image.open(screenshot_path+'//'+'printscreen.png')
  #使用Image的crop函數(shù),從截圖中再次截取我們需要的區(qū)域
  fimg=i.crop(rangle)
  fimg=fimg.convert('RGB')
  #保存我們截下來的驗證碼圖片,并讀取驗證碼內(nèi)容
  fimg.save(screenshot_path+'//'+'code.png')
  ocr=ffffddocr.DffffdOcr()
  with open(screenshot_path+'//'+'code.png','rb')as f:
  img_bytes=f.read()
  self.res=ocr.classification(img_bytes)
  print('識別出的驗證碼為:'+self.res)
  #判斷驗證碼錯誤時的提示信息是否存在
  def isElementPresent(self,by,value):
  try:
  element=self.driver.find_element(by=by,value=value)
  except NoSuchElementException:
  pass
  #發(fā)生了NoSuchElementException異常,說明頁面中未找到該元素,返回False
  return False
  else:
  #沒有發(fā)生異常,表示在頁面中找到了該元素,返回True
  return True
  #登錄
  def login(self):
  self.getVerification()
  self.driver.find_element(By.XPATH,'用戶名輸入框Xpath定位').send_keys('用戶名')
  self.driver.find_element(By.XPATH,'密碼輸入框Xpath定位').send_keys('密碼')
  self.driver.find_element(By.XPATH,'驗證碼輸入框Xpath定位').send_keys(self.res)
  sleep(1)
  self.driver.find_element(By.XPATH,'登錄按鈕Xpath定位').click()
  sleep(2)
  isFlag=True
  while isFlag:
  try:
  isPresent=self.isElementPresent(By.XPATH,'驗證碼錯誤時的提示信息Xpath定位')
  if isPresent is True:
  codeText=self.driver.find_element(By.XPATH,'驗證碼錯誤時的提示信息Xpath定位').text
  if codeText=="驗證碼不正確":
  self.getVerification()
  sleep(2)
  self.driver.find_element(By.XPATH,'驗證碼輸入框Xpath定位').clear()
  sleep(1)
  self.driver.find_element(By.XPATH,'驗證碼輸入框Xpath定位').send_keys(self.res)
  sleep(1)
  self.driver.find_element(By.XPATH,'登錄按鈕Xpath定位').click()
  sleep(2)
  tips=self.driver.find_element(By.XPATH,
  '未輸入驗證碼時的提示信息Xpath定位').text
  if tips=="請輸入驗證碼":
  self.getVerification()
  sleep(2)
  self.driver.find_element(By.XPATH,'驗證碼輸入框Xpath定位').click()
  sleep(1)
  self.driver.find_element(By.XPATH,'驗證碼輸入框Xpath定位').send_keys(self.res)
  sleep(1)
  self.driver.find_element(By.XPATH,'登錄按鈕Xpath定位').click()
  sleep(2)
  continue
  else:
  print("驗證碼正確,登錄成功!")
  except NoSuchElementException:
  pass
  else:
  isFlag=False
  sleep(5)
  self.driver.quit()
  if __name__=='__main__':
  GetVerificationCode().login()


  3.驗證碼樣例

01.png

  4.識別結果


  可以實現(xiàn):驗證碼識別錯誤后,繼續(xù)識別

02.png

  三、代碼說明


  本文代碼中時間等待都是使用了強制等待,如有需要可對代碼進行修改,可以使用顯示等待。關于selenium的三種等待方式(顯示等待,隱式等待,強制等待)可以參考其他博主的文章了解學習。


  總結


  對于現(xiàn)在已有的驗證碼圖片都有可能具備一定的識別能力。簡單來說,ffffddocr讓驗證碼識別變得如此簡單與易用,可以快速的檢測出圖片上的文字、數(shù)字或圖標,讓更多的伙伴能夠快速的破解網(wǎng)站的登錄驗證碼。


  綜上所述,這篇文章就給大家介紹到這里了,希望大家多多的要關注小編哦。


文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/128275.html

相關文章

  • 運用Python完成簡易短信驗證解決

      本文關鍵闡述了運用Python完成簡易短信驗證碼解決,文章內(nèi)容緊扣主題進行詳盡的基本介紹,具有很強的實用價值,必須的朋友可以學習一下  前言  我們做獲取數(shù)據(jù)時,太快或瀏覽經(jīng)常,或一瀏覽便給彈出來短信驗證碼,隨后蚌珠了~  今天小編就給大家來個簡易解決短信驗證碼的辦法  自然環(huán)境控制模塊  這兒需要使用一個ddddocr模塊,這也是他人開源系統(tǒng)提前準備好的一樣東西,簡單又好用,可是精準度差一丟...

    89542767 評論0 收藏0
  • Python3網(wǎng)絡爬蟲實戰(zhàn)---4、數(shù)據(jù)安裝:MySQL、MongoDB、Redis

    摘要:運行結果如果運行結果一致則證明安裝成功。上一篇文章網(wǎng)絡爬蟲實戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡爬蟲實戰(zhàn)數(shù)據(jù)庫的安裝 上一篇文章:Python3網(wǎng)絡爬蟲實戰(zhàn)---2、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp下一篇文章:Python3網(wǎng)絡爬蟲實戰(zhàn)---數(shù)據(jù)庫的安裝:MySQL、MongoDB、Redis 抓取下網(wǎng)頁代碼之后,下一步就是從網(wǎng)頁中提取信息,提取信息的方式有...

    xbynet 評論0 收藏0
  • python利用Tesseract識別驗證

    摘要:無論是是自動化登錄還是爬蟲,總繞不開驗證碼,這次就來談談中光學識別驗證碼模塊和。和是的一個識別庫,但其實是對做的一層封裝,是的引擎包裝器所以它們的核心是因此在安裝之前,我們需要先安裝。 無論是是自動化登錄還是爬蟲,總繞不開驗證碼,這次就來談談python中光學識別驗證碼模塊tesserocr和pytesseract。tesserocr和pytesseract是Python的一個OCR識...

    王陸寬 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<