python实例:实现用户名,密码,验证码输入登录网页系统

Posted pp的路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实例:实现用户名,密码,验证码输入登录网页系统相关的知识,希望对你有一定的参考价值。

环境准备:(python版本为3.6.0)

一、安装selenium:pip install selenium

二、下载谷歌浏览器驱动chromedriver.exe

1、网址:http://chromedriver.storage.googleapis.com/index.html(根据chrome的版本下载对应的)

2、将下载好的chromedriver.exe解压后放到指定目录(我一般放在代码目录下)

三,安装第三方库,可参考文章:https://www.cnblogs.com/fppblog/p/11804196.html

pip install pillow

pip install pytesseract

引入:

from pytesseract import pytesseract
from selenium import webdriver
from PIL import Image

四,代码实现

import time
import requests
from pytesseract import pytesseract
from selenium import webdriver
from PIL import Image


#创建一个浏览器对象
browser = webdriver.Chrome()
browser.maximize_window()
#打开登录界面
browser.get(\'http://cloud.xxxx.com/login\')

# 识别验证码
browser.save_screenshot(\'login.png\')
#获取验证码位置
codepng = browser.find_element_by_xpath(\'//*[@id="imgCheckCode"]\')
location = codepng.location
size = codepng.size
#获取验证码位置
left = location[\'x\']
top = location[\'y\']
bottom = top + size[\'height\']
right = left + size[\'width\']

#打开页面截图
login_png = Image.open(\'login.png\')
code_png = login_png.crop((left,top,right,bottom)) #这里需要传入一个元组
code_png.save(\'code.png\')
#识别验证码
#第一步:通过内置模块PIL打开文件
image = Image.open(\'code.png\')
#第二步:识别图片中的内容
image = image.convert(\'L\') #转化为灰度图
threshold = 168 #设定的二值化阈值
table = [] #table是设定的一个表,下面的for循环可以理解为一个规则,小于阈值的,就设定为0,大于阈值的,就设定为1
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)

image = image.point(table,\'1\') #对灰度图进行二值化处理,按照table的规则(也就是上面的for循环)
image.show()
result = pytesseract.image_to_string(image) #对去噪后的图片进行识别
print(\'图片内容为:\',result)

#定位账号密码验证码输入框
acc_input = browser.find_element_by_xpath(\'//*[@id="username"]\')
time.sleep(2)
acc_input.send_keys(\'EPxxxx001\')
pwd_input = browser.find_element_by_xpath(\'//*[@id="password"]\')
time.sleep(2)
pwd_input.send_keys(\'123456\')
code_input = browser.find_element_by_xpath(\'//*[@id="checkCode"]\')
time.sleep(2)
code_input.send_keys(result)
time.sleep(5)

#点击登录按钮
try:
browser.find_element_by_xpath(\'//*[@id="login"]/div[5]/button\').click()
#判断系统状态
url = browser.current_url
resp = requests.get(url, timeout=5)
code = resp.status_code
print(\'登录返回码为:\',code)
assert code == 200
except Exception as e:
time.sleep(5)
#关闭
browser.close()
print(\'发生错误,登录失败!\')
else:
if url == \'http://cloud.xxxx.com/lamp/analysis/data\':
print(\'登录成功!\')
else:
print(\'登录失败!\')
time.sleep(3)
# 关闭
browser.close()

本文部分为博主原创,转载请注明出处:https://www.cnblogs.com/fppblog/p/11797873.html

以上是关于python实例:实现用户名,密码,验证码输入登录网页系统的主要内容,如果未能解决你的问题,请参考以下文章

使用python 实现SSH登录设备时出现问题?

Java 之 Session 包含验证码登录案例

Java爬虫QQ空间?

Java实现验证码(上)

Java实现验证码(上)

有没有自动登录器,可以自动登录12306的,