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文 ...
随机推荐
- GitLab私服在Ubuntu上搭建总结
1.前期准备: sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates sudo apt-get ...
- 16. nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "auditUnitName"
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver:handleHttpMessageNotRead ...
- mysql系列-⼀条SQL查询语句是如何执⾏的?
⼀条SQL查询语句是如何执⾏的? ⼤体来说,MySQL 可以分为 Server 层和存储引擎层两部分 Server 层 Server 层包括连接器.查询缓存.分析器.优化器.执⾏器等,涵盖 MySQL ...
- imread()用法|| root权限
1.ushort用法? USHORT is a macro which is not part of the official C++ language (it's probably defined ...
- 使用TensorFlow v2库实现线性回归
使用TensorFlow v2库实现线性回归 此示例使用简单方法来更好地理解训练过程背后的所有机制 from __future__ import absolute_import, division, ...
- 干货 | NLP算法岗大厂面试经验与路线图分享
最近有好多小伙伴要面经(还有个要买简历的是什么鬼),然鹅真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面试来说,作者发现根本不是面经中说的样子 ...
- JVM 常见参数配置
-XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+PrintGCDetails 每次触发GC的时候更详细的相关日志 -XX:+UseSerialGC 串行回收 -Xms 堆初始值( ...
- Java工程师技能点梳理
从个人技术积累的角度,来看看一名合格的Java工程师在面试时所需要的知识技能. 1.基本语法 这包括static.final.transient等关键字的作用,foreach循环的原理等等.今天面试我 ...
- 深入理解NIO(二)—— Tomcat中对NIO的应用
深入理解NIO(二)—— Tomcat中对NIO的应用 老哥行行好,转载和我说一声好吗,我不介意转载的,但是请把原文链接贴大点好吗 Tomcat大致架构 先贴两张图大致看一眼Tomcat的架构 Tom ...
- 【cs224w】Lecture 1 & 2 - 图的性质 及 随机图
目录 Lecture 1: Introduction Lecture 2: Properties and Random Graph Degree Distribution Path Length Cl ...