使用python库解决登录的验证码识别-图片验证码

前言:

在UI自动化测试和爬虫测试中,验证码是个比较头疼的问题,包括:图片验证码,滑块验证码,等一些常见的验证码场景。

识别验证码的python 库有很多,用起来也并不简单,这里推荐一个简单实用的识别验证码的库 ddddocr (带带弟弟ocr)库。

今天先用一个图片验证码示例来演示下:

准备:

1.安装库ddddocr

2.安装库pillow

3.以一个带验证码登录的网站为示例:https://xqctk.jtys.sz.gov.cn/

开始编码:

1代码如下:

 1 import time
 2 from ddddocr import DdddOcr
 3 from selenium import webdriver
 4 from selenium.webdriver.common.by import By
 5 from PIL import Image  # 需安装 pillow
 6 
 7 path = 'https://xqctk.jtys.sz.gov.cn/'
 8 
 9 
10 def get_picture_code(locator):
11     pic_save_path = 'D://html.png'
12     cron_path = 'D://code.png'
13     browser.save_screenshot(pic_save_path)  # 保存为图片
14     location = browser.find_element(By.XPATH, locator)  # 获取需要识别的元素对象
15     size = location.size  # 获取需要识别的元素尺寸
16     position = (int(location.location['x']), int(location.location['y']), int(location.location['x'] + size['width']), int(location.location['y'] + size['height']))
17     Image.open(pic_save_path).crop(box=position).save(cron_path)  # crop进行裁剪
18     with open(cron_path, 'rb') as f:
19         img_bytes = f.read()
20         res = DdddOcr().classification(img_bytes)
21     return res
22 
23 
24 browser = webdriver.Chrome()  # 打开浏览器
25 browser.maximize_window()  # 浏览器最大化
26 browser.get(path)  # 打开网页
27 time.sleep(5)
28 pic_code = get_picture_code("//td[@id='incrementGetValidCodeImg']//img")
29 browser.find_element(By.XPATH, "//input[@id='incrementValidCode']").send_keys(pic_code)
30 time.sleep(5)
31 browser.quit()

运行结果:

使用python库解决登录的验证码识别-图片验证码

 

原文链接:https://www.cnblogs.com/jintianniu/p/17305564.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python库解决登录的验证码识别-图片验证码 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • python实现不同电脑之间视频传输功能

    实现两台电脑之间的视频传输功能,通常可以通过网络 Socket 编程实现。使用 Python 进行 Socket 编程的主要流程为: 创建 socket 对象,指定地址族(例如 AF_INET)、协议(例如 SOCK_STREAM)等参数。 绑定端口和 IP 地址。 进入监听状态(只对服务器端)。 连接远程服务器(只对客户端)。 发送数据和接收数据。 下面我…

    python 2023年6月2日
    00
  • Python之freegames 零代码的22个小游戏集合

    Python之freegames 零代码的22个小游戏集合攻略 1. 介绍 Python之freegames是一个由Python语言实现的,由22个小游戏组成的集合。这些游戏非常容易上手,因为它们都是使用Python标准库和freegames模块编写的。更重要的是,它们没有任何代码,因此无需担心程序语法错误或逻辑错误。 这些游戏的难度各不相同,既有简单的,也…

    python 2023年6月3日
    00
  • Python中列表的常用操作详解

    以下是详细讲解“Python中列表的常用操作详解”的完整攻略。 在Python中,列表是一种常用的数据类型,本文将介绍列表的常用操作。 创建列表 可以使用方号[]或list()函数创建一个列表。例如: lst1 = [1, 2, 3] lst2 = list(range(1, 4)) print(lst1) # 输出[1, 2, 3] print(lst2)…

    python 2023年5月13日
    00
  • python实现超级玛丽游戏

    Python实现超级玛丽游戏完整攻略 简介 超级玛丽游戏是经典的2D横板跳跃游戏,此文将讲解如何用Python实现简单的超级玛丽游戏。 前置技能 Python基础语法 Pygame库 实现步骤 安装Pygame库 可以通过pip install命令进行安装,例如: pip install pygame 准备游戏素材 可在网络上搜索“超级玛丽游戏贴图”、“超级…

    python 2023年5月31日
    00
  • 学习Python,你还不知道main函数吗

    学习 Python,你还不知道 main 函数吗? 在 Python 中,main 函数是一个特殊的函数,它通常用于测试和运行代码。main 函数是 Python 程序的入口点,即程序从哪里开始执行。 为什么要使用 main 函数? 使用 main 函数可以在测试时方便地运行您的代码,也可以增加代码的可读性。将代码封装在 main 函数中,能够使它更加易于理…

    python 2023年6月3日
    00
  • Python 爬虫多线程详解及实例代码

    Python 爬虫多线程详解及实例代码 简介 本文主要介绍使用 Python 编写爬虫时如何使用多线程进行爬取优化。在爬虫程序中,请求网页数据是很常见的操作,但是一个请求需要等待相应的时间,这样在等待的时候程序就阻塞,导致程序运行效率低下。而使用多线程能够使程序并发请求数据,从而提高程序运行效率。 多线程编程 使用 threading 库创建多线程 Pyth…

    python 2023年5月14日
    00
  • 把项目从Python2.x移植到Python3.x的经验总结

    移植 Python 2.x 项目到 Python 3.x 并不是一件容易的事情,因为 Python 3.x 做了很大的改变。下面是把项目从 Python 2.x 移植到 Python 3.x 的经验总结: 1. 确定 Python 版本并安装所需的库 首先,需要确定你的 Python 版本。Python 3.x 和 Python 2.x 在语法和标准库上有很…

    python 2023年6月2日
    00
  • Python3 JSON 数据解析及日期和时间小结

    下面是Python3 JSON数据解析及日期和时间小结的完整攻略。 Python3 JSON数据解析 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript语言标准(ECMA-262第3版,1999年12月)的一个子集。 Python3…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部