selenium项目实战(三):实现网页验证码识别
步骤
- 截屏整个页面
- 获得验证码坐标数据
- 根据坐标数据抠图
- 使用pytesseract模块进行验证
问题:
利用save_screenshot和PIL模块的crop截取验证码区域时,截取不到正确的二维码图片。
**原因:**坐标定位不准确,电脑默认缩放的值为125%。将其改为100%即可正确定位;或者将对应的左上角坐标x、y,图片宽高width、height分别乘以对应的比例1.25,同样可以准确截取图片。图片验证码识别方案:
- 使用pytesseract库:该方法适合各种变形较少的验证码,对于扭曲的字母和数字识别率大大降低。
- 调用showapi 提供的 图片验证码识别
- 自己训练机器学习模型实现验证码识别。
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项目实战(三):实现网页验证码识别相关推荐
- 06.简书项目实战三:详情页面和登录功能实现
简书项目实战三:详情页面和登录功能实现 1. 详情页面布局 这部分的布局比之前的简单多了,就一个标题加上主要内容而已. export default class Detail extends Comp ...
- 【Selenium项目实战】项目环境搭建:安装JDK、mysql、Tomcat、jpress和测试系统
前言 一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210416. [Selenium项目实战] 项目环境搭建:安装JDK.mysql.Tomcat.jpress和测试系统 需求分 ...
- 深度学习caffe实战(一)验证码识别
狭义上讲验证码识别是将验证码图像转化成字符串值,传统方法常常先对验证码图像进行字符分割,再对验证码进行识别,劣势在于字符分割方法往往针对不同风格的验证码需要做修改,某些验证码加入噪声或线条,字符位置不 ...
- python反爬虫应对之借助平台超级鹰突破网页验证码识别
在爬虫过程中,有些网页需要登录才能获取里面的数据,在大部分的登录过程中,都会需要一个叫验证码识别,目前的网页有各种各样的验证码,有数字加字母的组合,有物品识别等等 在代码进行网页爬取过程中,如果由人为 ...
- BootStrap响应式项目实战之世界杯网页设计
视频 BootStrap实战 目标 响应式布局复习 HTML5的复习 CSS3的复习 了解BootStrap 一.复习 响应式布局:页面可以随着设备的变化而动态改变. 淘宝:pc端一套页面:不能随 ...
- selenium项目实战(四):完成测试用例
一.用户注册测试用例 from time import sleepfrom selenium import webdriver from selenium.webdriver.support impo ...
- html项目_Python Selenium项目实战之添加发送HTML测试报告邮件!
说明 继第一个实战项目的基础上添加自动发送报告邮件接口,代码有部分调整 变动 1.增加文本文档SendToUserinfo.txt 用来保存邮件接收者的信息 2.修改测试报告文件名称格式并添加repr ...
- 地理空间数据项目实战——共享单车停车需求识别与地图匹配
共享单车停车需求识别与地图匹配 在我们日常生活中,大家都骑过共享单车,现在的共享单车app里面都有这样一个功能:在地图上规划出了很多的单车停放栅栏(停放点),用户需要把单车停在停放栅栏内,否则就要扣钱 ...
- 爬虫项目实战三:爬取抖音短视频
爬取抖音网页版短视频 目标 项目准备 网站分析 反爬分析 每一页的链接分析 代码实现 效果显示 目标 爬取抖音短视频,批量下载到本地. 项目准备 软件:Pycharm 第三方库:requests,fa ...
最新文章
- 密码学基础知识(三)古典密码
- 面向对象三大特性总结
- Docker和容器简介
- Java读带有BOM的UTF-8文件乱码原因及解决方法(转)
- CSS3过渡效果(CSS3)
- 【BP数据预测】基于matlab狼群算法优化BP神经网络数据预测【含Matlab源码 658期】
- HTML5期末大作业:影视视频网站设计——爱影评在线电影(10页面) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
- 苏宁大数据怎么运营_苏宁首个无人店大数据曝光,其消费人群是如何分布的?...
- 在mybatis中怎么书写工具类,也就是创建一个sqlsessionFactory
- Emmet For Faster HTML CSS Workflow by Edwin Diaz
- 论Python常见的内置模块
- 干货|Android系统定制开发基础篇
- 4ARM-PEG-OH 四臂PEG羟基
- csgo笔记本党设置4:3画面
- 泰坦尼克号沉船数据分析与可视化、数据建模与分类预测【Python | 机器学习-Sklearn】
- 机械螺旋缠绕法管道非开挖修复
- vue-cli实现多页面多路由
- 激励是改善业绩的关键
- win11强行退回win10
- ews java 新建邮箱_通过EWS发送电子邮件时使用自定义显示名称