Python使用selenium实现网页用户名 密码 验证码自动登录功能


Posted in Python onMay 16, 2018

好久没有学python了,反正各种理由吧(懒惰总会有千千万万的理由),最近网上学习了一下selenium,实现了一个简单的自动登录网页,具体如下。

1.安装selenium:

如果你已经安装好anaconda3,直接在windows的dos窗口输入命令安装selenium:

python -m pip install --upgrade pip

查看版本pip show selenium

2.接着去http://chromedriver.storage.googleapis.com/index.html下载chromedriver.exe(根据chrome的版本下载对应的)

3.将下载好的chromedriver.exe解压后放到指定目录

4.安装tesseract-ocr.exe 配置环境变量

5.安装pytesseract : pip install pytesseract

6.python脚本

思路:6.1登录页面按F12检查元素,获取用户名 密码 验证码 验证码图片的元素id

 6.2.调用chromedriver

 6.3.截取验证码图片的位置

 6.4.pytesseract识别图片中字符,最后验证码识别为空!!???这个待解决

 6.5.脚本如下:

from selenium import webdriver
from PIL import Image
import pytesseract
import os,time
chromedriver = "D:\Program Files\Anaconda3\selenium\webdriver\chromedriver.exe" #这里写本地的chromedriver 的所在路径
os.environ["webdriver.Chrome.driver"] = chromedriver #调用chrome浏览器
driver = webdriver.Chrome(chromedriver)
driver.get("http://xxxx.com") #该处为具体网址
driver.refresh() #刷新页面
driver.maximize_window() #浏览器最大化
#获取全屏图片,并截取验证码图片的位置
driver.get_screenshot_as_file('a.png')
location = driver.find_element_by_id('imgValidateCode').location
size = driver.find_element_by_id('imgValidateCode').size
left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']
a = Image.open("a.png")
im = a.crop((left,top,right,bottom))
im.save('a.png')
time.sleep(1)
#打开保存的验证码图片
image = Image.open("a.png")
#图片转换成字符
vcode = pytesseract.image_to_string(image)
print(vcode)
#填充用户名 密码 验证码
driver.find_element_by_id("staffCode").send_keys("username")
driver.find_element_by_id("pwd").send_keys("password")
driver.find_element_by_id("validateCode").send_keys(vcode)
#点击登录 
driver.find_element_by_id("loginBtn").click()

总结

以上所述是小编给大家介绍的Python实现网页用户名 密码 验证码自动登录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python实现购物系统(示例讲解)
Sep 13 Python
python中实现k-means聚类算法详解
Nov 11 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
Python装饰器知识点补充
May 28 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
大数据分析用java还是Python
Jul 06 Python
Python切片列表字符串如何实现切换
Aug 06 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
matplotlib grid()设置网格线外观的实现
Feb 22 Python
Selenium 模拟浏览器动态加载页面的实现方法
May 16 #Python
Python selenium实现微博自动登录的示例代码
May 16 #Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 #Python
Python(Django)项目与Apache的管理交互的方法
May 16 #Python
Python检测网络延迟的代码
May 15 #Python
在windows下Python打印彩色字体的方法
May 15 #Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 #Python
You might like
用php解析html的实现代码
2011/08/08 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
Bootstrap每天必学之面板
2015/11/30 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
Python实现简单的2048小游戏
2021/03/01 Python
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
Python是如何进行类型转换的
2013/06/09 面试题
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
25道Java面试题集合
2013/05/21 面试题
投标担保书范文
2014/04/02 职场文书
Oracle笔记
2021/04/05 Oracle
为Centos安装指定版本的Docker
2022/04/01 Servers