python+selenium 实现验证码由base64转为jpg/png格式,并识别验证码

这篇具有很好参考价值的文章主要介绍了python+selenium 实现验证码由base64转为jpg/png格式,并识别验证码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用python+selenium实现自动化登录时,遇到了关于验证码的一些问题,主要是验证码格式的转换和识别。我这里的验证码都是用的base64格式,我的思路是先将base64格式转化为jpg或者png格式,然后用ddddocr模型来识别图片内容。

#base64转jpg
import base64
from selenium import webdriver
from selenium.webdriver.common.by import By
#使用xpath定位到验证码所在的位置
el = driver.find_element_by_xpath('//*[@id="app"]/div/form/div[3]/div/div[2]/img')
data = el.get_attribute("src")
print(len(data))
#去掉base64的'data:image/png;base64,'
a = data.replace('data:image/png;base64,', '')
print(len(a))
missing_padding = 4 - len(a) % 4
if missing_padding:
    a += '=' * missing_padding
print(a, file=open('base64.txt', 'w'))
with open('base64.txt', 'r') as f_obj:
    b = base64.b64decode(f_obj.read())
#注意base64的数据前头部分,如果是data:image/png,则转换成jpg格式
    file = open('1.jpg', 'wb')
    file.write(b)
print('图片已下载')
code = driver.find_element_by_xpath('//*[@id="app"]/div/form/div[3]/div/div[1]/input')  # 验证码输入框位置
ocr = ddddocr.DdddOcr()
time.sleep(3)
try:
    with open('1.jpg', 'rb') as fp:
        image = fp.read()
    catch = ocr.classification(image)  # 验证码返回给catch
    print(catch)
    #将验证码内容写入输入框
    code.send_keys(catch)
except Exception as e:
    print(e)
print('successful')

总结:文章来源地址https://www.toymoban.com/news/detail-547797.html

  1. replace()不生效: replace返回的是一个新的值,需要用一个新的变量来接收
  2. ddddocr模型相对好用,但是也不能避免出现识别有误的情况,识别有误时可以尝试循环
  3. 在由base64格式转换jpg格式时,一定要去掉base64的前头部分

到了这里,关于python+selenium 实现验证码由base64转为jpg/png格式,并识别验证码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实现: JPG与PNG格式图片间互转

    【注意】转换完成后,转换图会与原图在同一个文件夹,只需按大小进行排列就可以将转换后的图片筛选出来

    2024年02月06日
    浏览(65)
  • base64 前端显示 data:image/jpg;base64

    通常base64是后端服务之间传输时常用的一种方式。即把图片流转成了byte数组,再转成一长串字符串(这就是我们看到的base64格式字符串)。 想要还原成图片,后端通常的做法是将base64的字符串转成byte数组,再将byte数组装到流里写出来,就是图片了。 放在前端显示,主需在

    2024年02月04日
    浏览(39)
  • 【base64】JavaScript&uniapp 将图片转为base64并展示

    Base64是一种用于编码二进制数据的方法,它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中,通过将二进制数据转换为可打印字符的形式进行传输  图片大小从1.36MB到169kb 上面的代码中,toDataURL产生的是图片的base64编码,Base64编码必须是完整且正确

    2024年02月11日
    浏览(45)
  • 【base64码转为图片,并预览】

    开发工具及需求介绍 (1)开发工具:HBuilder (2)数据库:SQLite (3)组件库:uni-app (4)需求:(后端)将图片信息加密,前端接收到的是一个base64码。前端需要利用这些信息,转成 image src=\\\"imageURL\\\"/image 中的imageURL,以便能显示出图片。后端返回的信息,我们必需要的是”图

    2024年02月05日
    浏览(49)
  • react将文件转为base64进行上传

    将 图片、pdf、word、excel等文件 进行上传。图片、pdf等调接口A、word、excel等附件调接口B。接口关于文件是 base64格式 的参数 上传资源,区分 影像与附件 使用原生input标签, type=\\\'file\\\' ,进行上传 上传后的回调,对文件进行分类,影像与附件 对文件进行base64编码 执行接口进行

    2024年02月10日
    浏览(32)
  • 图片转为base64格式的优缺点分析

    1. 优点 (1)网页中使用base64格式的图片时,不用再请求服务器调用图片资源,减少了服务器访问次数。 (2)base64编码的字符串,更适合不同平台、不同语言的传输; (3)算法是编码, 不是压缩, 编码后只会增加字节数,但是算法简单, 几乎不会影响效率,算法可逆, 解码很

    2024年02月05日
    浏览(49)
  • elementui图片上传转为base64字符串

    场景:后端需要将上传的图片文件作为base64字符串的方式传参给他。 html代码 js代码

    2024年02月09日
    浏览(60)
  • 【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素

    点个赞留个关注吧!! 今天做一个超简单的无损放大图片的程序,原理很简单 JPG原理:读取原图片的像素点的RGB颜色值并保存到文件内,然后将原图进行翻倍放大,在放大的图上进行绘制,绘制一个像素的翻倍大小,一行一行的绘制,然后保存并删掉颜色文件 PNG原理:因为

    2024年02月11日
    浏览(54)
  • 利用Python将照片按“拍摄日期”分类——包括JPG、PNG、GIF、HEIC

            一切的起因是因为换了新手机 (-,-),旧手机上的照片实在是太多了所以想腾出大部分到PC上面来释放一些存储空间。但是首先出现的问题就是照片有6000多个文件而且全都集中在一起,没有进行任何的分类。         所以我初步的想法,是按照日期时间进行分

    2024年02月22日
    浏览(50)
  • Python Selenium如何下载网页中的图片到本地?(Base64编码的图片下载)

    前言:                 在网页上,图片有时会以Base64编码的形式嵌入在HTML中,而不是作为单独的文件提供。这种方式的优点是可以减少HTTP请求的数量,因为图片数据直接包含在HTML中,不需要额外的请求来获取图片文件。这对于小图片或图标特别有用,因为这些图片的文

    2024年04月17日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包