selenium模拟登陆截取验证码

向百度大大下手吧。。。

大致思路

1.打开chrome
2.进入百度
3.点击登录
在这里插入图片描述
4.切换账号密码登录
在这里插入图片描述
5.尝试获取验证码截图(密码输错三次就可以出现验证码了)
在这里插入图片描述

GKD

from selenium import webdriver
from PIL import Image
import time

实例化
browser = webdriver.Chrome()

输入网址
browser.get('https://tieba.baidu.com/index.html')

模拟点击登录(使用xpath定位)
browser.find_element_by_xpath('//li[@class="u_login"]').click()

等待两秒
time.sleep(2)

切换账号密码登录模式
browser.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]')

输入账号密码(在已经输入错误两三次情况下再次输入账号密码会弹出验证码)
browser.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__userName"]').send_keys('111222221')
browser.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__password"]').send_keys('22222222222222221')

截图
browser.save_screenshot('code.png')

获取验证码位置	  截图起点(x,y)  验证码大小(width,height)
photo = browser.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__verifyCodeImg"]')
x = photo.location['x']
y = photo.location['y']
width = photo.size['width']
height = photo.size['height']

打开图片  截图
im = Image.open('code.png')
im = Image.open('code.png')
im = im.crop((x,y,x+width,y+height))
im.save('hehe.png')

关闭当前窗口
browser.close()

有些网站在点击登录之后会弹出一个iframe或者frame,这种时候需要先进行切换进对应的frame或者iframe中才可以获取验证码位置

browser.switch_to.frame('frame对应的id')

之后继续查找位置进行截图就好了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值