欢迎访问宙启技术站
智能推送

selenium+python如何实现688网站验证码图片的截取功能

发布时间:2023-05-18 20:29:37

Selenium 是一个流行的自动化测试工具,它可以用于模拟用户交互来测试网站的功能和性能。在实际应用中,我们可能需要与验证码图片打交道,比如在注册、登录等场景中需要对验证码进行截取并识别,以此验证用户操作的合法性。这篇文章将介绍如何使用 Selenium Python 实现 688 网站验证码图片的截取功能。

Step 1:安装 Selenium

在开始之前,我们需要先安装 Selenium Python 库。可以使用 pip 命令进行安装:

pip install selenium

同时,我们还需下载 Chrome 驱动并设置环境变量,这里不再赘述。

Step 2:定位验证码图片元素

在获取验证码图片前,我们首先需要定位其所在的 html 元素。可以使用 Chrome 开发者工具定位,找到验证码图片所在的标签及其 xpath 或 css selector。

在 688 网站中,验证码图片的标签为:

<img class="yzm-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAACuCAIAAABJRTxLAAA..." alt="">

其中,class 属性为 "yzm-img",可以使用 class 选择器定位。也可以通过图片 src 属性定位,这里因为是 base64 编码的图片,所以我们暂时无法使用源文件地址进行定位。

使用 class 选择器定位元素的代码:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.688.com/')
element = driver.find_element_by_css_selector('.yzm-img')

这段代码会启动 Chrome 浏览器并打开 688 网站首页,然后找到 class 为 "yzm-img" 的元素。

Step 3:截取验证码图片

有了验证码图片的 html 元素,我们就可以使用 Selenium 自带的截图功能直接截取图片了。只需调用元素对象的 screenshot_as_png 方法即可。

image = element.screenshot_as_png

我们可以将 image 转换为 PIL 的 Image 对象,进而进行图像处理。这里需要用到 PIL 库,可使用 pip 命令进行安装。

from PIL import Image
import io

# 将 image 转换为 PIL Image 对象
image = Image.open(io.BytesIO(image))
# 显示验证码图片
image.show()

这段代码会将 image 转换为 PIL 的 Image 对象并显示出来。

当然,我们也可以将图片保存到本地:

image.save('captcha.png')

我们已经成功地截取了验证码图片,并将其转换为 PIL 的 Image 对象。接下来,可以针对该图片进行 OCR 识别,或通过其他方式对验证码进行处理。