selenuim获取页面验证码

本文介绍了使用Python的PIL和selenium库进行网页登录时验证码的抓取和识别。通过pytesseract进行图像识别,但需先安装Tesseract-OCR并设置环境变量。当遇到因屏幕缩放导致的识别位置错误时,可通过调整分辨率或计算缩放比例来修正。对于不规则验证码,可能需要借助第三方API实现更准确的识别。
摘要由CSDN通过智能技术生成

登录网页的时候,很多时候都是需要输入验证码登录,如:

 下面我从自己学习获取验证码时遇到的坑开始说起:

from PIL import Image
from selenium import webdriver
import pytesseract
from selenium.webdriver.common.by import By

# Chrome浏览器
driver = webdriver.Chrome()
driver.get('https://sms.danmi.com/login.html')
driver.maximize_window()  # 放大窗口
driver.save_screenshot('D:/image.png')
code_img = driver.find_element(By.XPATH, '//*[@id="code-img"]')  # 定位到验证码元素
# 获取验证码元素的定位,坐标为左上角的点
print(code_img.location)  # {'x': 1139, 'y': 366}
# 我的电脑分辨率125%
k = 1.25
left = code_img.location['x'] * k
top = code_img.location['y'] * k
right = code_img.size['width'] * k + left
height = code_img.size['height'] * k + top
img = Image.open('D:/image.png')
newImg = img.crop((left, top, right, height))
newImg.save('D:/image1.png')
print(pytesseract.image_to_string(newImg, lang='chi_sim'))  # 规则的验证码是可以打印出来的,如果是不规则的需要调用一些第三方的api

driver.quit()

1、首先安装图像处理的库,cmd打开任务管理器,输入下面命令,下面是我在Bito中获取到的解释,这个插件真的好用

pip install Pillow

我已经安装好了,所以提示如下: 

 

 

Pillow 是 Python Imaging Library (PIL) 的一个分支,也是一个图像处理库。它可以让 Python 程序方便地处理各种图片格式,包括打开、创建、修改和保存图片,并且提供了一系列强大的图像处理功能(比如尺寸调整、裁剪、旋转、滤镜等),可以大大简化图片处理的操作。 pip install Pillow 是用于安装该库的命令。安装后,你就可以在 Python 代码中导入 Pillow 模块,并调用其中的函数来进行图片处理操作了。

2、安装图像识别库,同样在任务管理器中输入以下命令

pip install pytesseract

 

 

pytesseract 是一个基于 Tesseract-OCR 引擎的 Python 图像识别库,支持多种操作系统,并且可以识别多种语言的文字。在使用该库前,需要安装 Tesseract OCR 引擎并添加到系统环境变量中,同时也需要安装 pytesseract 库。 pip install pytesseract 是用于安装 pytesseract 库的命令。安装后,你可以在 Python 代码中使用 pytesseract 来识别图片中的文字,并将其转换为字符串。

我安装了之后,一直报错,报错信息如下,原来是因为我没有安装Tesseract-OCR导致的

pytesseract.pytesseract.TesseractNotFoundError: 
tesseract is not installed or it's not in your PATH. See README file for more information.

 

下载地址:https://digi.bib.uni-mannheim.de/tesseract/

安装完成后,pytesseract 就能正常使用了

下载完安装包后,需要在环境变量的PATH中添加安装路径

3、然后遇到的一个问题就是,我裁的验证码总是错位,最后还是男朋友替我找到解决办法,因为img.crop()方法是按照电脑100%缩放定位的,我电脑是125%,所以总是截不对位置

解决办法        1:把电脑分辨率调至100%

                       2:将img.crop()的四个参数都乘以缩放比例

由于100%太丑了,界面用不起习惯,所以笔记中的代码用的是方法2

4、最后就是下面这个方法,只能识别到规则的验证码图片,遇到一些不规则的图像时,需要调用第三方api来解决(大概率要花钱)

pytesseract.image_to_string(newImg, lang='chi_sim')

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值