selenium模拟登陆截取验证码

向百度大大下手吧。。。

大致思路

1.打开chrome
2.进入百度
3.点击登录
selenium模拟登陆截取验证码_第1张图片
4.切换账号密码登录
selenium模拟登陆截取验证码_第2张图片
5.尝试获取验证码截图(密码输错三次就可以出现验证码了)
selenium模拟登陆截取验证码_第3张图片

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')

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

你可能感兴趣的:(python自学笔记,python自学练习)