yzmsb_test.py
识别诺诺金服页面的验证码,并自动登录到后台。
#导包
from selenium import webdriver
from PIL import Image, ImageDraw
from time import sleep
import pytesseract
#定义浏览器句柄,赋值url为诺诺金服后台地址
driver = webdriver.Chrome()
driver.implicitly_wait(10) #隐式等待10s
url = 'https://gl.axnjf.com/Contents/global/login/login.jsp'
#窗口最大化
driver.maximize_window()
driver.get(url)
# 诺诺金服后台页面截取验证码,代码如下:
driver.save_screenshot('E:/test_nuonuojinfu/step_01.png')
#定位验证码
imgelement = driver.find_element_by_xpath('//*[@id="img_validator"]')
#获取验证码x,y轴坐标
location = imgelement.location
#获取验证码的长宽
size = imgelement.size
#写成我们需要截取的位置坐标
rangle = (int(location['x']), int(location['y']), int(location['x']+size['width']), int(location['y']+size['height']))
i = Image.open('E:/test_nuonuojinfu/step_01.png')
#二次截图
frame4 = i.crop(rangle)
#二次截图后命名
frame4.save('E:/test_nuonuojinfu/step_02.png')
print('二次截图成功!') #对截取后的验证码二值化,代码如下:
# 二值数组
t2val = {}
def twoValue(image, G):
for y in range(0, image.size[1]):
for x in range(0, image.size[0]):
g = image.getpixel((x, y))
if g > G:
t2val[(x, y)] = 1
else:
t2val[(x, y)] = 0 def saveImage(filename, size):
image = Image.new("", size)
draw = ImageDraw.Draw(image)
for x in range(0, size[0]):
for y in range(0, size[1]):
draw.point((x, y), t2val[(x, y)])
image.save(filename) path = 'E:/test_nuonuojinfu/step_02.png'
image = Image.open(path)
image = image.convert('L')
twoValue(image, 125)
path1 = 'E:/test_nuonuojinfu/step_03.jpg'
saveImage(path1, image.size)
print("返回信息:验证码到手,增强成功,春哥附体,定能识别!")
#将处理后的验证码用Tesseract识别,代码如下:
#添加pytesseract参数变量
pytesseract.pytesseract.tesseract_cmd= "C:\Program Files (x86)\Tesseract-OCR/tesseract.exe"
tessdata_dir_config = '--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR/tessdata" '
#打开需要识别的验证码图片
image1 = Image.open("E:/test_nuonuojinfu/step_03.jpg")
#识别验证码,赋值变量为code
print('开始识别二维码,请等待...')
code = pytesseract.image_to_string(image1)
#打印识别后的验证码
print('验证码:' + str(code))
#拿到验证码后,进行登录操作,代码如下:
driver.find_element_by_xpath('//*[@id="username"]').send_keys("nbiaabc") #输入账号
driver.find_element_by_xpath('//*[@id="password"]').send_keys("fBmhicc") #输入密码
#输入拿到的验证码
driver.find_element_by_xpath('//*[@id="validator"]').send_keys(code) #输入验证码
# 点击登录按钮
driver.find_element_by_xpath('//*[@id="button"]').click()
sleep(1)
driver.quit()
yzmsb_test.py的更多相关文章
- python调用py中rar的路径问题。
1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...
- Python导入其他文件中的.py文件 即模块
import sys sys.path.append("路径") import .py文件
- import renumber.py in pymol
cp renumber.py /usr/local/lib/python2.7/dist-packages/pymol import renumber or run /path/to/renumber ...
- python gettitle.py
#!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...
- 解决 odoo.py: error: option --addons-path: The addons-path 'local-addons/' does not seem to a be a valid Addons Directory!
情况说明 odoo源文件路径-/odoo-dev/odoo/: 我的模块插件路径 ~/odoo-dev/local-addons/my-module 在my-module中创建了__init__.py ...
- caffe机器学习自带图片分类器classify.py实现输出预测结果的概率及caffe的web_demo例子运行实例
caffe机器学习环境搭建及python接口编译参见我的上一篇博客:机器学习caffe环境搭建--redhat7.1和caffe的python接口编译 1.运行caffe图片分类器python接口 还 ...
- 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优
libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...
- MySqlNDB使用自带的ndb_setup.py安装集群
在用Mysql做集群时,使用Mysql的NDB版本更易于集群的扩展,稳定和数据的实时性. 我们可以使用Mysql自带的工具进行集群安装与管理:ndb_setup.py.位于Mysql的安装目录bin下 ...
- 将做好的py文件打包成模块,供别人安装调用
现在要将写完的3个py文件,打包. 步骤: 1.新建一个文件夹setup(名字随便取),在setup文件夹下,再新建一个文件夹financeapi. 2.将上面4个py文件拷贝至financeapi文 ...
随机推荐
- 【狂神说】JAVA Mybatis 笔记+源码
简介 自学的[狂神JAVA]MyBatis GitHub源码: https://github.com/Donkequan/Mybatis-Study 分享自写源码和笔记 配置用的 jdk13.0.2 ...
- Centos7 搭建 Flume 采集 Nginx 日志
版本信息 CentOS: Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x ...
- 常见Web安全漏洞--------sql注入
SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的操作.在mybatis 中比较容易出现:${} 会发生sql 注入问题 #{}: 解析为一个 JDBC 预编译语句(p ...
- C语言中结构体内存存储方式
C语言中结构体内存存储方式 结构体的默认存储方式采用以最大字节元素字节数对其方式进行对齐,例如一个结构体中定义有char.int类型元素,则结构体存储空间按照int类型占用字节,如果还有double类 ...
- MySQL出现的问题
错误展示 今天还是老样子照常启动MySQL WorkBench的时候出了错误,无法连接服务器 CMD登陆也不行 发现mysql的服务都没启动,于是点击启动,却又报这个错 cmd查看MySQL的日志,想 ...
- 图解JVM内存区域划分
图解JVM类加载机制和双亲委派模型一文中讲述了 Java 类加载的过程,它包含加载.验证.准备.解析.初始化.使用.卸载这 7 个步骤.在准备阶段,JVM会将类加载到内存中,为类变量分配内存并赋予初值 ...
- 使用Dism命令对Win7镜像进行操作
在操作前,我们需要下载Win7部署工具AIK和Win7原版镜像 ★镜像迅雷链接 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408 ...
- scikit_learn分类器详解
1 分类 分类是将事物按特性进行分类,例如将手写数字图片分类为对应的数字. 1.1 MINIST数字图片集分类 MINST就是一个70000张规格较小的手写数字图片,如何将他们分类为对应 ...
- 粘包处理现象及其解决方案——基于NewLife.Net网络库的管道式帧长粘包处理方法
[toc] #1.粘包现象 每个TCP 长连接都有自己的socket缓存buffer,默认大小是8K,可支持手动设置.粘包是TCP长连接中最常见的现象,如下图 socket缓存中有5帧(或者说5包)心 ...
- 十进制转化为非十进制C++代码
还是先为大家介绍一下原理吧. 假设余数为 r ,十进制数为 n :(拆分为整数 zs ,余数 ys) 对 zs:需要将 zs 除 r 取余数,直到商为 0 停止,将余数倒序排列即可. 对 ys:需要将 ...