最近在学习selenium自动化,便整理了下加深印象,如有侵权,告删!
用tesseract OCR引擎处理图片中的验证码,步骤:
(1)对整个屏幕截屏,保存成png格式的图片;
(2)在截取的图片中定位验证码图片的位置坐标;
(3)根据坐标对验证码截图;
(4)最后在图片中提取验证码,输入到输入框。
具体代码如下:
import requests
import time
from bs4 import BeautifulSoup
import tesserocr
from PIL import Image
from selenium import webdriver
from datetime import datetime
#解析页面的验证码
driver = webdriver.Chrome(r'E:\soft\Chrome-Win7\chromedriver.exe')#打开谷歌浏览器
driver.get('http://zfcj.gz.gov.cn/data/QueryService/Query.aspx?QueryID=26')#打开一个网站
filename = "./image/image1.png"
driver.save_screenshot(filename)#截屏
element = driver.find_element_by_id("VcodeSubmit")#需要截取的元素定位
left = element.location['x']#获取元素上下左右的位置
top = element.location['y']
right = element.location['x'] + element.size['width']
bottom = element.location['y'] + element.size['height']
im = Image.open(filename)#打开刚才的截图
im = im.crop((left, top, right, bottom))#截取对应位置
im.save(filename)#保存覆盖原有截图
#识别出验证码
img = Image.open(filename)
code = tesserocr.image_to_text(img).strip()
print(code)
版权归原作者 CiCi_he 所有, 如有侵权,请联系我们删除。