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文 ...
随机推荐
- node.js初步
Node.js介绍 Node.js 诞生于2009年,Node.js采用C++语言编写而成,是 一个Javascript的运行环境.Node.js 是一个基于 Chrome V8 引擎的 JavaSc ...
- Redis系列(一):小试牛刀
引言 随着互联网的高速发展,传统的关系数据库(如MySQL.Microsoft SQL Server等)已不能满足日益增长的业务需求,如商品秒杀.抢购等及时性非常强的功能,随着应用高并发的访问,会造成 ...
- 《Mathematical Analysis of Algorithms》中有关“选择第t大的数”的算法分析
开头废话 这个问题是Donald.E.Knuth在他发表的论文Mathematical Analysis of Algorithms中提到的,这里对他的算法分析过程给出了更详细的解释. 问题描述: 给 ...
- Java工程师常用Linux命令
本文所列的Linux常用命令包含:文件相关(目录操作,内容查看,查找与比较,压缩与解压),进程管理,网络操作,系统管理,性能监测与优化,Java常用工具多个方面概述. 文件目录基本操作 ls 命令用来 ...
- python中如何在一个for循环中遍历两个列表
`其实就是用zip把两个列表包装起来: for x, y in zip(list1, list2)
- Excel决定吃什么
1.Excel填充 在第一列填充1到100 (1)下拉填充 (2)填充——自动填充——序列 2.第二列加权填上自己吃的午饭 3.vloopup函数(列查找) 几乎都使用精确匹配,该项的参数一定要选择为 ...
- Maven多仓库配置(公司仓库和阿里云仓库)
Maven多仓库配置(公司仓库和阿里云仓库) 一.之前的配置 之前maven本地的setting.xml的仓库配置,都是直接设置mirror节点 <mirrors> <mirror& ...
- Material Design 组件之 AppBarLayout
AppBarLayout 是一个垂直方向的 LinearLayout,它实现了许多符合 Material Design 设计规范的状态栏应该具有的功能,比如滚动手势. AppBarLayout 一般直 ...
- Python学习-第四节:常用模块-logging,re,time
1:logging模块 import logging logging.debug('This is debug message') logging.info('This is info message ...
- 物体的三维识别与6D位姿估计:PPF系列论文介绍(三)
作者:仲夏夜之星 Date:2020-04-08 来源:物体的三维识别与6D位姿估计:PPF系列论文介绍(三) 文章“A Method for 6D Pose Estimation of Free-F ...