1. 程式人生 > 程式設計 >Python驗證碼擷取識別程式碼例項

Python驗證碼擷取識別程式碼例項

1.環境

  • python3.7
  • selenium
  • webdriver
  • PIL
  • Image

2.下面demo是擷取“去哪兒”官網的驗證碼

# -*- coding=utf-8 -*-
# CodeDemo.py
# PyCharm  Slade  2019/7/20
# import selenium,os
from selenium import webdriver
from PIL import Image


def aucthcode(coderddr):
  """
  傳參驗證碼的Xpath
  頁面全圖為'code.png'     命名這個你們開心就好
  驗證碼截圖名為"aucthcode.png
  :param coderddr:
  :return:
  """
  
  driver.save_screenshot('code.png')
  element = driver.find_element_by_xpath(coderddr)    # 獲取驗證碼的div位置
  left = element.location['x'] +280
  top = element.location['y'] +81
  right = left + element.size['width'] + int(13)
  bottom = top + element.size['height'] + int(2)
  img = Image.open('code.png')
  imgcod = img.crop((left,top,right,bottom))     # 根據 div的長寬截圖
  imgcod.save('aucthcode.png')
  print((left,bottom))


if __name__ == '__main__':
  driver = webdriver.Chrome()
  driver.maximize_window()
  driver.get('https://user.qunar.com/passport/login.jsp')
  driver.find_element_by_css_selector('a.pwd-login').click()
  aucthcode('//*[@id="captcha"][1]/p[1]')
  driver.quit()


  # img = Image.open('code.png')
  # imgcod = img.crop((1392,393,1490,425))     # 根據 div的長寬截圖
  # imgcod.save('aucthcodeN.png')

注:程式碼中的驗證碼擷取座標,不一定是標準的,我是通過獲取元素的座標為基礎引數,然後在main裡面進行除錯最終得到我適用的座標

執行效果展示 code.png

Python驗證碼擷取識別程式碼例項

執行擷取的驗證碼效果展示 aucthcode.png

Python驗證碼擷取識別程式碼例項

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。