国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python通用驗(yàn)證碼識(shí)別OCR庫ffffddocr的安裝使用教程

89542767 / 779人閱讀

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


  前言


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


  項(xiàng)目地址:https://github.com/sml2h3/ffffddocr


  一、安裝ffffddocr


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


   pip install ffffddocr


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


  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('識(shí)別出的驗(yàn)證碼為:'+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)
  #獲取驗(yàn)證碼信息
  def getVerification(self):
  #獲取當(dāng)前文件的位置、并獲取保存截屏的位置
  current_location=os.path.dirname(__file__)
  screenshot_path=os.path.join(current_location,"..","VerificationCode")
  #截取當(dāng)前網(wǎng)頁并放到自定義目錄下,并命名為printscreen,該截圖中有我們需要的驗(yàn)證碼
  sleep(1)
  self.driver.save_screenshot(screenshot_path+'//'+'printscreen.png')
  sleep(1)
  #定位驗(yàn)證碼
  imgelement=self.driver.find_element(By.XPATH,'驗(yàn)證碼圖片的Xpath定位')
  #獲取驗(yàn)證碼x,y軸坐標(biāo)
  location=imgelement.location
  #獲取驗(yàn)證碼的長寬
  size=imgelement.size
  #寫成我們需要截取的位置坐標(biāo)
  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')
  #保存我們截下來的驗(yàn)證碼圖片,并讀取驗(yàn)證碼內(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('識(shí)別出的驗(yàn)證碼為:'+self.res)
  #判斷驗(yàn)證碼錯(cuò)誤時(shí)的提示信息是否存在
  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,'驗(yàn)證碼輸入框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,'驗(yàn)證碼錯(cuò)誤時(shí)的提示信息Xpath定位')
  if isPresent is True:
  codeText=self.driver.find_element(By.XPATH,'驗(yàn)證碼錯(cuò)誤時(shí)的提示信息Xpath定位').text
  if codeText=="驗(yàn)證碼不正確":
  self.getVerification()
  sleep(2)
  self.driver.find_element(By.XPATH,'驗(yàn)證碼輸入框Xpath定位').clear()
  sleep(1)
  self.driver.find_element(By.XPATH,'驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
  sleep(1)
  self.driver.find_element(By.XPATH,'登錄按鈕Xpath定位').click()
  sleep(2)
  tips=self.driver.find_element(By.XPATH,
  '未輸入驗(yàn)證碼時(shí)的提示信息Xpath定位').text
  if tips=="請(qǐng)輸入驗(yàn)證碼":
  self.getVerification()
  sleep(2)
  self.driver.find_element(By.XPATH,'驗(yàn)證碼輸入框Xpath定位').click()
  sleep(1)
  self.driver.find_element(By.XPATH,'驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
  sleep(1)
  self.driver.find_element(By.XPATH,'登錄按鈕Xpath定位').click()
  sleep(2)
  continue
  else:
  print("驗(yàn)證碼正確,登錄成功!")
  except NoSuchElementException:
  pass
  else:
  isFlag=False
  sleep(5)
  self.driver.quit()
  if __name__=='__main__':
  GetVerificationCode().login()


  3.驗(yàn)證碼樣例

01.png

  4.識(shí)別結(jié)果


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

02.png

  三、代碼說明


  本文代碼中時(shí)間等待都是使用了強(qiáng)制等待,如有需要可對(duì)代碼進(jìn)行修改,可以使用顯示等待。關(guān)于selenium的三種等待方式(顯示等待,隱式等待,強(qiáng)制等待)可以參考其他博主的文章了解學(xué)習(xí)。


  總結(jié)


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


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


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

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

相關(guān)文章

  • 運(yùn)用Python完成簡易短信驗(yàn)證解決

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

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

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

    xbynet 評(píng)論0 收藏0
  • python利用Tesseract識(shí)別驗(yàn)證

    摘要:無論是是自動(dòng)化登錄還是爬蟲,總繞不開驗(yàn)證碼,這次就來談?wù)勚泄鈱W(xué)識(shí)別驗(yàn)證碼模塊和。和是的一個(gè)識(shí)別庫,但其實(shí)是對(duì)做的一層封裝,是的引擎包裝器所以它們的核心是因此在安裝之前,我們需要先安裝。 無論是是自動(dòng)化登錄還是爬蟲,總繞不開驗(yàn)證碼,這次就來談?wù)刾ython中光學(xué)識(shí)別驗(yàn)證碼模塊tesserocr和pytesseract。tesserocr和pytesseract是Python的一個(gè)OCR識(shí)...

    王陸寬 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<