向百度大大下手吧。。。
大致思路
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')