好久没有学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.脚本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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实现网页用户名 密码 验证码自动登录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/clarkxhb/p/autologinweb.html