步骤

  • 截屏整个页面
  • 获得验证码坐标数据
  • 根据坐标数据抠图
  • 使用pytesseract模块进行验证

问题:

  • 利用save_screenshot和PIL模块的crop截取验证码区域时,截取不到正确的二维码图片。
    **原因:**坐标定位不准确,电脑默认缩放的值为125%。将其改为100%即可正确定位;或者将对应的左上角坐标x、y,图片宽高width、height分别乘以对应的比例1.25,同样可以准确截取图片。

  • 图片验证码识别方案:

    1. 使用pytesseract库:该方法适合各种变形较少的验证码,对于扭曲的字母和数字识别率大大降低。
    2. 调用showapi 提供的 图片验证码识别
    3. 自己训练机器学习模型实现验证码识别。
import pickle
import string
import time
from lib.ShowapiRequest import ShowapiRequest
from PIL import Image
import os
import random
import base64def get_code(driver, id):# 获取验证码图片t = time.time()path = os.path.dirname(os.path.dirname(__file__)) + '\\screenshots'picture_name1 = path + '\\' + str(t) + '.png'driver.save_screenshot(picture_name1)ce = driver.find_element_by_id(id)left = ce.location['x']top = ce.location['y']right = ce.size['width'] + leftdown = ce.size['height'] + topdpr = driver.execute_script('return window.devicePixelRatio')im = Image.open(picture_name1)img = im.crop((left * dpr, top * dpr, right * dpr, down * dpr))t = time.time()picture_name2 = path + '\\' + str(t) + '.png'img.save(picture_name2)with open(picture_name2, "rb") as fs:# b64encode:编码,b64decode: 解码base64_data = base64.b64encode(fs.read())# base64.b64decode(base64_data)r = ShowapiRequest("http://route.showapi.com/2360-2", "927638", "1a0681c845114fbf9beaa7a666c6eb82")r.addBodyPara("file_base64", base64_data)res = r.post()text = res.json()['showapi_res_body']code = text['pic_str']return code# 生成随机字符串
def gen_random_str():rand_str = ''.join(random.sample((string.ascii_letters + string.digits), 8))  # 随机生成8位的字母+数字组合字符return rand_strdef save_cookie(driver, path):with open(path, 'wb') as filehandler:cookies = driver.get_cookies()print(cookies)pickle.dump(cookies, filehandler)def load_cookie(driver, path):with open(path, 'rb') as cookiesfile:cookies = pickle.load(cookiesfile)for cookie in cookies:driver.add_cookie(cookie)

selenium项目实战(三):实现网页验证码识别相关推荐

  1. 06.简书项目实战三:详情页面和登录功能实现

    简书项目实战三:详情页面和登录功能实现 1. 详情页面布局 这部分的布局比之前的简单多了,就一个标题加上主要内容而已. export default class Detail extends Comp ...

  2. 【Selenium项目实战】项目环境搭建:安装JDK、mysql、Tomcat、jpress和测试系统

    前言 一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210416. [Selenium项目实战] 项目环境搭建:安装JDK.mysql.Tomcat.jpress和测试系统 需求分 ...

  3. 深度学习caffe实战(一)验证码识别

    狭义上讲验证码识别是将验证码图像转化成字符串值,传统方法常常先对验证码图像进行字符分割,再对验证码进行识别,劣势在于字符分割方法往往针对不同风格的验证码需要做修改,某些验证码加入噪声或线条,字符位置不 ...

  4. python反爬虫应对之借助平台超级鹰突破网页验证码识别

    在爬虫过程中,有些网页需要登录才能获取里面的数据,在大部分的登录过程中,都会需要一个叫验证码识别,目前的网页有各种各样的验证码,有数字加字母的组合,有物品识别等等 在代码进行网页爬取过程中,如果由人为 ...

  5. BootStrap响应式项目实战之世界杯网页设计

    视频 BootStrap实战 目标 响应式布局复习 HTML5的复习 CSS3的复习 了解BootStrap 一.复习 响应式布局:页面可以随着设备的变化而动态改变. ​ 淘宝:pc端一套页面:不能随 ...

  6. selenium项目实战(四):完成测试用例

    一.用户注册测试用例 from time import sleepfrom selenium import webdriver from selenium.webdriver.support impo ...

  7. html项目_Python Selenium项目实战之添加发送HTML测试报告邮件!

    说明 继第一个实战项目的基础上添加自动发送报告邮件接口,代码有部分调整 变动 1.增加文本文档SendToUserinfo.txt 用来保存邮件接收者的信息 2.修改测试报告文件名称格式并添加repr ...

  8. 地理空间数据项目实战——共享单车停车需求识别与地图匹配

    共享单车停车需求识别与地图匹配 在我们日常生活中,大家都骑过共享单车,现在的共享单车app里面都有这样一个功能:在地图上规划出了很多的单车停放栅栏(停放点),用户需要把单车停在停放栅栏内,否则就要扣钱 ...

  9. 爬虫项目实战三:爬取抖音短视频

    爬取抖音网页版短视频 目标 项目准备 网站分析 反爬分析 每一页的链接分析 代码实现 效果显示 目标 爬取抖音短视频,批量下载到本地. 项目准备 软件:Pycharm 第三方库:requests,fa ...

最新文章

  1. 密码学基础知识(三)古典密码
  2. 面向对象三大特性总结
  3. Docker和容器简介
  4. Java读带有BOM的UTF-8文件乱码原因及解决方法(转)
  5. CSS3过渡效果(CSS3)
  6. 【BP数据预测】基于matlab狼群算法优化BP神经网络数据预测【含Matlab源码 658期】
  7. HTML5期末大作业:影视视频网站设计——爱影评在线电影(10页面) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  8. 苏宁大数据怎么运营_苏宁首个无人店大数据曝光,其消费人群是如何分布的?...
  9. 在mybatis中怎么书写工具类,也就是创建一个sqlsessionFactory
  10. Emmet For Faster HTML CSS Workflow by Edwin Diaz
  11. 论Python常见的内置模块
  12. 干货|Android系统定制开发基础篇
  13. 4ARM-PEG-OH 四臂PEG羟基
  14. csgo笔记本党设置4:3画面
  15. 泰坦尼克号沉船数据分析与可视化、数据建模与分类预测【Python | 机器学习-Sklearn】
  16. 机械螺旋缠绕法管道非开挖修复
  17. vue-cli实现多页面多路由
  18. 激励是改善业绩的关键
  19. win11强行退回win10
  20. ews java 新建邮箱_通过EWS发送电子邮件时使用自定义显示名称

热门文章

  1. imp-00403 oracle,12.2 以上版本的IMP-00403问题
  2. java中 像素、英寸、厘米的换算
  3. 小米/红米手机,刷入第三方recovery(红米5 plus为例)
  4. 【小程序入门】小程序首页的设置
  5. 【清单】搜索引擎使用大法
  6. ANSYS Maxwell导出图片的方法
  7. Spark-MLlib 学习入门到掌握-DecisionTreeClassifier决策树分类器[19]
  8. 简单python项目实例-python实战项目
  9. 思科无线AP配置之一(使用超级终端连接设备篇)
  10. 选择企业云存储的注意事项